黑马程序员技术交流社区
标题:
在C#的结构为什么不能实例化字段
[打印本页]
作者:
hou1989
时间:
2013-1-10 17:14
标题:
在C#的结构为什么不能实例化字段
本帖最后由 hou1989 于 2013-1-11 10:58 编辑
在C#的结构为什么不能实例化字段,如下:
struct Simple
{
public int x=10;
public int y=20;
}
这样做,为什么编译错误
作者:
林嘉健
时间:
2013-1-10 17:37
因为在结构体的实例字段只能在构造函数中进行初始化,而不能使用赋值的方法。
例子:
struct Simple
{
public int x;
public int y;
public Simple(int x, int y)
{
this.x = x;
this.y = y;
}
}
作者:
王晨
时间:
2013-1-10 18:58
在结构声明中,除非字段被声明为 const 或 static,否则无法初始化;还有结构不能声明默认构造函数(没有参数的构造函数)或
析构函数。
作者:
甘家利
时间:
2013-1-10 22:31
结构中不能给字段赋初始值
作者:
乔培培
时间:
2013-1-11 10:06
本帖最后由 乔培培 于 2013-1-11 10:09 编辑
藤椅上那位仁兄总结得很好
“在结构声明中,除非字段被声明为 const 或 static,否则无法初始化;
还有结构不能声明默认构造函数(没有参数的构造函数)或析构函数。”
出现这样的结果就是因为结构体是值类型,而类是引用类型,这是两者的一个区别
值类型就意味着它存在于栈区,它传递的是值,而不是引用
如果字段直接赋值在结构体中,这就等于说在实例化的时候,对象可以使用这个字段的引用,而这是不允许的!
那为什么使用const和static就可以呢,因为使用了const和static之后这个字段就不再属于结构体了
。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2