为什么我不能在我的结构中初始化我的字段?
我很惊讶我无法在结构中初始化我的字段,为什么会这样? 喜欢:
struct MyStruct { private int a = 90; }
但这是一个complie时间错误。 我不知道为什么这是一个问题? 请向我解释一下。
原因主要是表现。 考虑以下,
var a = new MyStruct[1000];
如果C#允许在结构中初始化字段,那么初始化必须执行1000次,对于数组中的每个元素执行一次。 C#希望避免在其他语言中可能出现的这种隐式行为。
在C#中, struct
不能声明默认构造函数。
编译器将初始化语句移动到构造函数,而C#中的struct
不会发生这种情况。
那是因为您的赋值实际上是由编译器转换为在默认构造函数中完成的。 但是C# struct
没有默认的构造函数,你可以在Kent Boogaart发布的链接中看到。
这是为了表现。 当您使用默认构造函数创建结构时,它所做的只是在堆栈上分配许多字节并将它们初始化为0。
- QueueUserWorkItem()和BeginInvoke()之间的区别是什么,用于执行不需要返回类型的异步活动
- 您如何从.NET字符串中获取一系列Unicode代码点?
- DNX SDK版本’dnx-clr-win-x86.1.0.0-beta8-15530’无法安装
- 添加枚举值是否会破坏二进制兼容性?
- 在路径中使用带参数和空格的Process.Start
- 客户端中的IExtensibleDataObject用法
- Double.TryParse()忽略NumberFormatInfo.NumberGroupSizes?
- 如何修复Xamarin.forms System.IO.FileNotFoundException:找不到文件
- 为什么我得到“CS0472:表达式的结果总是为真,因为int类型的值永远不等于int类型的null?”