本帖最后由 mokemqm 于 2009-12-17 20:09:58 编辑

解决方案 »

  1.   

    难道        StructHero hero=new StructHero();
            StructMonster monster=new StructMonster();
      

  2.   

    不是说结构不用NEW的吗?
      

  3.   

    那你得给他赋一个值啊,要不然就得new了。
      

  4.   


    那到底还不是NEW了?
    我是青鸟,S1没好好学,S2了,努力中
      

  5.   

    结构是值类型,首先 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; 
      

  6.   

    怪物是用了struct 但是你英雄却是用了class ,class 必须用new 来初始化