|
|
1
3
第二种语法(
假设
然后
与相同
修复:使用列表,没有合理的方法将元素添加到数组中。
如果使用其他没有
为什么使用版本
是等效的 * 属于
请注意,在数组初始值设定项中,可以使用这两个语法来达到相同的效果,但在数组字段的初始值设定项中不能这样做( All possible C# array initialization syntaxes )
虽然
* 当必须观察到变化时,满足规则确实有点复杂-参见埃里克·利珀特的 comment below |
|
|
2
3
在 表示 上下文这些是合法的数组值:
在一个 局部或成员变量初始值设定项 上下文中,这是一个合法的数组初始值设定项:
这是合法的 集合初始值设定项 :
如果
但是在 成员或集合初始值设定项上下文 这是 不 合法数组属性初始值设定项:
(注意,我在这里总结并评论了数组的规则 https://stackoverflow.com/a/5678393/88656 ) 我的理解是,问题是“为什么不呢?” 答案是“没有好的理由”。这只是C#语法以及对象和集合初始值设定项规则的一个奇怪之处。 我曾多次考虑解决这个奇怪的问题,但总有更好的办法来利用我的时间;这是一个基本上对任何人都没有好处的修复,因为解决方法非常简单。 我猜想,没有什么能阻止C#团队设计、指定、实现、测试和发布该功能,除了还有大约一百万个其他功能可以更好地利用他们的时间之外。 如果您对此有强烈的感觉,那么,编译器是开源的;您可以自由地提出该功能并为其辩护。或者,就此而言,实现它并提交一个请求。( 之后 您可以提出该功能。) 在实现您想要的功能之前,您只需使用上面列出的三种“表达式”形式之一。这样做并不累赘。 |
|
|
Nicola · C++CLI项目中非托管数据上的C#指针 8 年前 |
|
|
Anton Savelyev · 在发布版本中删除类指针会导致内存问题 8 年前 |
|
|
shmnff · 显式转换int到SqlInt32 8 年前 |
|
|
Alex12 · windows窗体中的C++if语句[关闭] 8 年前 |
|
|
Claude Tan · 类型定义和类型引用之间有什么区别? 8 年前 |