大家好,我的一个C#程序出了点问题,请求大家帮下! 本帖最后由 mokemqm 于 2009-12-17 20:09:58 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 难道 StructHero hero=new StructHero(); StructMonster monster=new StructMonster(); 不是说结构不用NEW的吗? 那你得给他赋一个值啊,要不然就得new了。 那到底还不是NEW了?我是青鸟,S1没好好学,S2了,努力中 结构是值类型,首先 NEW 在结构的使用有 类类型有所不同,类类型使用new 是调用构造函数在托管堆分配内存存储空间,返回其地址。而结构类型使用new 不会分配托管堆分配内存而是调用构造函数初始化字段。结构的构造函数要么是有参数的,不可能是无参数,应为无参数是系统自己隐式添加的,就算有另外的构造函数,如果你显示的声明一个无参数的构造函数在结构里,将导致编译错误。结构的是值类型 存储在栈中,值类型的变量即包括变量地址和变量内容所以可以直接像int ,double ..等使用,不要需要new 使用new 只是说可以方便一点初始化字段,但需要自己添加构造函数。struct my{int x;int y; my(int x,int y){this.x=x;this.y=y}}my mytest=new my(10,10);这样mytest.x 和mytest.y 都初始化为10;结构还可以这么初始化my mytest; 现在的mytest 数据值类型变量 mytest.x=XX; 而引用类型就不允许这么做,引用类型存储其地址,所以需要使用new返回地址及分配空间。不能在结构中初始化字段,比如struct my{int x=10;}将导致编译错误,因为my现在属于一个数据类型,它不占用存储空间,只有在定义变量的时候才能初始化使用struct my{int x;}my mytest;mytest.x=10; 怪物是用了struct 但是你英雄却是用了class ,class 必须用new 来初始化 请问,输出数据库的DataTime数据格式 VS2005怎么连接到SQL2000数据库 如何把PDA上的OK键改成Enter键 为什么用了dotnetbar后VS2005的快捷键都用不了 [[分享]]树treeview的好文章和源代码 转告所有IT从业者!!! WPF,数据验证 正则表达式的头疼问题 关于DATAGRID的问题(谢谢各位了)我等你们回答呀。。。。 如何让Panel的透明部分过滤掉鼠标事件? 我的数据源是table,怎么隐藏datagridview的列 DataGridView格式设置问题
StructMonster monster=new StructMonster();
那到底还不是NEW了?
我是青鸟,S1没好好学,S2了,努力中
类类型使用new 是调用构造函数在托管堆分配内存存储空间,返回其地址。而结构类型使用new 不会分配托管堆分配内存而是调用构造函数初始化字段。结构的构造函数要么是有参数的,不可能是无参数,应为无参数是系统自己隐式添加的,就算有另外的构造函数,如果你显示的声明一个无参数的构造函数在结构里,将导致编译错误。
结构的是值类型 存储在栈中,值类型的变量即包括变量地址和变量内容所以可以直接像int ,double ..等使用,不要需要new 使用new 只是说可以方便一点初始化字段,但需要自己添加构造函数。
struct my
{
int x;
int y;
my(int x,int y)
{this.x=x;this.y=y}
}my mytest=new my(10,10);
这样mytest.x 和mytest.y 都初始化为10;
结构还可以这么初始化
my mytest; 现在的mytest 数据值类型变量
mytest.x=XX; 而引用类型就不允许这么做,引用类型存储其地址,所以需要使用new返回地址及分配空间。不能在结构中初始化字段,
比如
struct my
{
int x=10;
}
将导致编译错误,因为my现在属于一个数据类型,它不占用存储空间,只有在定义变量的时候才能初始化使用
struct my
{
int x;
}
my mytest;
mytest.x=10;