从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&lt;Datum&gt; 中,或者像您在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#中的另一个类访问多种类型的多维数组的主要内容,如果未能解决你的问题,请参考以下文章

Json C# 多维数组访问

如何从 C# 中的嵌套循环写入多维数组?

Java 和 C# 中的多维数组

C# 中的多维数组列表或列表?

如何针对 C、C++ 或 Fortran 中的另一个多维数组快速对多维数组进行十亿点排序?

C# 从数据库表中填充多维数组