原始C#值类型,例如int
是结构.那么,为什么int
没有初始化?我认为应该有默认构造函数.另一方面,自定义结构是可以的.
在以下代码中
struct STRCT { } class Program { static void Main(string[] args) { STRCT strct; strct.Equals(8); strct.GetHashCode(); strct.GetType(); strct.ToString(); int i; i.Equals(8); i.GetHashCode(); i.GetType(); i.ToString(); } }
从C#编译器视图中可以看到前5行代码,接下来的5行代码会生成编译错误:
使用未分配的局部变量
请解释原因?从我的观点来看,这两种类型都是结构,并且具有相同的行为.
这是定义任务规则的病态极端.特别:
如果结构类型变量的每个实例变量都被认为是明确赋值的,则它被认为是明确赋值的.
在这种情况下(STRCT strct
),实例变量集是空的,所以它们都是明确分配的.