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的方法会更好。希望这是朝着正确方向迈出的一步。这更多的是关于信息(答案)的改进,而不是与设计有关的任何事情。您说“您不能编辑对这个数组的引用”,这是正确的,但是新手可能会错误地认为该语句扩展到了数组元素。因此,为了防止这种假设持续到那句话的最后,最好指出两者之间的区别。