问题描述
classProgram{staticvoidMain(string[]args){Pointp;Console.WriteLine(p);Pointp1=newPoint();Console.WriteLine(p1);Console.ReadKey();}}//定义结构structPoint{////定义时赋初始值,编译器会报错//privateintx;}
运行时打印结果如下:但是去掉结构中字段前的注释后,//定义结构structPoint{////定义时赋初始值,编译器会报错privateintx;}运行代码就会报错我知道要是在结构中定义字段,运行时,会调用默认的构造函数为字段赋初始值注释前和注释后,到底有什么区别,第一种为什么不报错,注释掉字段后为什么有报错了呢?
解决方案
解决方案二:
改成Pointp=newPoint();试试。
解决方案三:
语法就是这么规定的,私有字段不能直接初始化。http://msdn.microsoft.com/zh-cn/library/0taef578.aspx对于任何私有成员或以其他方式设置为不可访问的成员,只能在构造函数中进行初始化。
解决方案四:
你第二种里面有成员,当然要初始化,不然就报错了
时间: 2024-09-20 12:36:00