C#一次创建具有多个值的常量数组

C#一次创建具有多个值的常量数组,c#,arrays,static,C#,Arrays,Static,我有下面这样的课 public class PhoneNumbersDto { public string code { get; set; } public int dial { get; set; } public string mask { get; set; } public string name { get; set; } } { "code": "TR", "dial": 90, "mask": "### ### ## #

我有下面这样的课

public class PhoneNumbersDto
{            
 public string code { get; set; }
 public int dial { get; set; }
 public string mask { get; set; }
 public string name { get; set; }
}
 {
    "code": "TR",
    "dial": 90,
    "mask": "### ### ## ##",
    "name": "Turkey"
  },
  {
    "code": "TM",
    "dial": 993,
    "mask": "## ######",
    "name": "Turkmenistan"
  },
  {
    "code": "TC",
    "dial": 1649,
    "mask": "### ####",
    "name": "Turks & Caicos Islands"
  }
我的价值观如下

public class PhoneNumbersDto
{            
 public string code { get; set; }
 public int dial { get; set; }
 public string mask { get; set; }
 public string name { get; set; }
}
 {
    "code": "TR",
    "dial": 90,
    "mask": "### ### ## ##",
    "name": "Turkey"
  },
  {
    "code": "TM",
    "dial": 993,
    "mask": "## ######",
    "name": "Turkmenistan"
  },
  {
    "code": "TC",
    "dial": 1649,
    "mask": "### ####",
    "name": "Turks & Caicos Islands"
  }
我想用这些类类型创建一个静态常量数组,但无法初始化它

是否有一种方法可以同时创建具有多个值的静态数组或常量数组

多谢各位

    public static readonly PhoneNumbersDto[] array =
    {
        new PhoneNumbersDto()
        {
            code = "TR",
            dial = 90,
            mask = "### ### ## ##",
            name = "Turkey"
        },
        new PhoneNumbersDto()
        {
            code = "TM",
            dial = 993,
            mask = "## ######",
            name = "Turkmenistan"
        },
        new PhoneNumbersDto()
        {
            code = "TC",
            dial = 1649,
            mask = "### ####",
            name = "Turks & Caicos Islands"
        }
    }; 
正如@eocron所说,初始化可以工作;以上就是一个例子。虽然为了更好的样式,我建议您使用接受这四个输入的构造函数,而不是所示的样式

readonly
用于代替
const
——您只能将编译时项声明为常量。readonly只是意味着您无法编辑对此数组的引用

正如@eocron所说,初始化可以工作;以上就是一个例子。虽然为了更好的样式,我建议您使用接受这四个输入的构造函数,而不是所示的样式


readonly
用于代替
const
——您只能将编译时项声明为常量。readonly仅表示无法编辑对此数组的引用。

为什么不能初始化它们?有错误吗?有什么例子吗?我创建了一个静态数组,但只有一个项目。但是我不能同时创建多个数组。我找不到孤子,也许我不适合搜索解决方案。为什么不能初始化它们?有错误吗?有什么例子吗?我创建了一个静态数组,但只有一个项目。但是我不能同时创建多个数组。我找不到孤子,也许我不适合搜索解。为了完整性,应该指出数组元素可以更改,即使数组引用本身不能。如果需要完全不变性,则应使用
ReadOnlyCollection
或类似类型(可以从此处显示的表达式初始化,除非需要显式
new
)。@madreflection:完全正确。这里可以进行很多设计改进,包括首先决定这是一个静态场。也许返回ReadOnlyCollection的方法会更好。希望这是朝着正确方向迈出的一步。这更多的是关于信息(答案)的改进,而不是与设计有关的任何事情。您说“您不能编辑对这个数组的引用”,这是正确的,但是新手可能会错误地认为该语句扩展到了数组元素。因此,为了防止该假设持续到该语句之前,最好指出区别。为了完整性,应该指出数组元素可以更改,即使数组引用本身不能更改。如果需要完全不变性,则应使用
ReadOnlyCollection
或类似类型(可以从此处显示的表达式初始化,除非需要显式
new
)。@madreflection:完全正确。这里可以进行很多设计改进,包括首先决定这是一个静态场。也许返回ReadOnlyCollection的方法会更好。希望这是朝着正确方向迈出的一步。这更多的是关于信息(答案)的改进,而不是与设计有关的任何事情。您说“您不能编辑对这个数组的引用”,这是正确的,但是新手可能会错误地认为该语句扩展到了数组元素。因此,为了防止这种假设持续到那句话的最后,最好指出两者之间的区别。