从C#中的另一个类访问多种类型的多维数组
Posted
技术标签:
【中文标题】从C#中的另一个类访问多种类型的多维数组【英文标题】:Access multi-dimensional array of multiple types from another class in C# 【发布时间】:2020-08-14 12:38:12 【问题描述】:我是 C# 新手,调查过但没有成功。我来自 php 编程,我有以下 JSON:
"data": [
"iD":0 , "name":"woody", "a":4.0, "b": 3.5, "foo": [5,8] ,
"iD":1 , "name":"donald", "a":5.0, "b": 2.4, "foo": [4, 2]
]
我需要的是在 C# 中创建类似的东西,如果可能的话,在一个单独的类中,以便能够以正确的方式访问数据。 我尝试为每个项目创建一个不同的数组,但我认为它不正确。
根据我的研究,基于我作为示例提供的 JSON,我有以下数据类型:“字符串、整数和双精度”。 在 PHP 中,您可以将这种类型的数据混合在同一个数组中并通过索引调用它,但我不知道如何在 C# 中做同样的事情。
眼睛,我的问题不是如何读取我在上面放置的 JSON,而是如何使用该数据结构创建一个类似的数组(或对象),并且我可以从另一个类访问它。
希望我说清楚了,提前谢谢。
【问题讨论】:
您应该创建一个包含三个属性的类。静态类型语言(如 C#)的关键特性是,您始终知道访问属性时获得的确切类型。因此,当您编写dataObject.name
时,您会得到一个字符串并且可以执行任何字符串操作,而如果您对该字符串应用任何数学运算,您会得到一个编译器错误。您一定要阅读 C# 的基本概念。
感谢您的回复。我在 OOP 方面没有太多经验。你能给我一个具有这种结构的类的例子吗?我知道另一种选择是创建一个 JSON 文件并从 C# 中读取它。但是对于学习主题,我想知道如何直接在 C# 中进行。
【参考方案1】:
您应该创建类/结构来表示此数据的结构:
public class Datum
public int ID get; set;
public string Name get; set;
public double A get; set;
public double B get; set;
public List<int> C get; set;
您可以将这个Datum
直接存储在List<Datum>
中,或者像您在JSON 中所做的那样,将它作为一个名为Data
的属性存储在另一个类中:
public class RootObject
public List<Datum> Data get; set;
然后,您可以使用object and collection initialisers 创建这些对象:
var rootObject = new RootObject
Data = new List<Datum>
new Datum
ID = 0,
Name = "Woody",
A = 4.0,
B = 3.5,
C = new List<int> 5, 8
,
new Datum
...
【讨论】:
我进行了适当的测试,它按预期工作,感谢您提供的信息。以上是关于从C#中的另一个类访问多种类型的多维数组的主要内容,如果未能解决你的问题,请参考以下文章