【问题标题】:TypeScript array equivalent in C# [closed]C# 中等效的 TypeScript 数组 [关闭]
【发布时间】:2016-05-26 15:40:55
【问题描述】:

我在 TypeScript 中有这个数组:

public lineChartData:Array<any> = [
  {data: [65, 59, 80, 81, 56, 55, 40], label: 'Series A'},
  {data: [28, 48, 40, 19, 86, 27, 90], label: 'Series B'},
  {data: [18, 48, 77, 9, 100, 27, 40], label: 'Series C'}
];

我将如何在 C# 中创建等效项?我是 TypeScript 的新手,从未遇到过“任何”类型。

【问题讨论】:

  • 这不是 JavaScript。
  • 需要将两者匹配起来的目的是什么?您是否将此对象发送到客户端浏览器以供 javascript 使用?
  • 我的错 - TypeScript 不是 JavaScript。我正在将一些现有的 TypeScript 代码转换为 C#。
  • 你试过什么?您究竟希望哪个部分“等效”?你目前有什么 C# 代码,你在哪里卡住了?你试过在网上搜索"typescript any type"吗?
  • 现在我有一些代码填充 System.Drawing.PointF 数组。我的最终目标是获取这些点并将它们添加为“数据”部分并给它们一个标签。

标签: c# arrays http data-structures typescript


【解决方案1】:

您可以使用匿名类型

var lineChartData = new [] {
    new { data = new [] { 65, 59, 80, 81, 56, 55, 40 }, label = "Series A" },
    new { data = new [] { 65, 59, 80, 81, 56, 55, 40 }, label = "Series B" }
};

这看起来非常接近问题中提出的 Typescript 版本。

【讨论】:

  • 如何标记返回此匿名类型的函数?我知道将函数返回类型标记为“对象”会起作用,但有更明确的方法吗?
  • 不幸的是,为了从方法中返回它,您必须明确项目类型并返回显式类型的数组或返回 dynamic 的数组。
【解决方案2】:

在 C# 中会是这样的:

var lineChartData = new List<DataLine>
{
    new DataLine {Data = new[] {65, 59, 80, 81, 56, 55, 40}, Label = "Series A"},
    new DataLine {Data = new[] {28, 48, 40, 19, 86, 27, 90}, Label = "Series B"},
    new DataLine {Data = new[] {18, 48, 77, 9, 100, 27, 40}, Label = "Series C"}
};

LineChartData 的每一行都是这样的:

class DataLine
{
    public int[] Data { get; set; }
    public string Label { get; set; } 
}

【讨论】:

  • 嗯,是的,这个结构可以保存与 OP 的 TypeScript 代码相同的数据,但并不等价。 dynamic 或匿名对象。
  • @CodeCaster 你是对的,但我假设他只想要DataLabel,它们分别是一个数组和一个字符串。如果他想要更多 动态 和 TypeScript 之类的东西,那么 dynamic 就是要走的路。
  • “我假设他只是” - 是的,所以这个问题还不清楚。我们不知道 OP究竟想要做什么
猜你喜欢
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 2015-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
相关资源
最近更新 更多