如果我在C#下声明了一个对象,想在使用的时候再使用new为其分配内存,
C#基于.NetFramework的类库中有没有可以判断对象是否已被分配内存的方法,
如果没有分配的话,再为其分配内存;
虽然知道这样很麻烦,不过想知道可不可以,谢谢了!!!

解决方案 »

  1.   

    不懂你的意思。
    没有初始化的对象都是null呀。
      

  2.   

    object o;
    if(o!=null)
    {
    ///
    }
      

  3.   

    比如我自定义了一个结构,
    struct myStruct
    {
    ...
    ...}
    myStruct s;
    而不是写成:myStruct s=new myStruct();
    这样应该是不能使用的吧;所以我想在用到的时候再new,只是为了想要做个判断,判断其是否已被分配内存,该怎么解决
      

  4.   

    ***********
    object o;
    if(o!=null)
    {
    ///
    }
    **************
    除了这样,有没有别的方法,.NetFrameWork
    的类库里有没有相关的函数可以实现?
      

  5.   

    struct 是值类型,不能先声明再new,你只能用class
      

  6.   

    这样,在声明的时候明确地为其赋null值:SomeClassOrStructName myobj = null;等用的时候,判断是否为null就可以了:// 下面我想用myobj
    if(myobj == null)  // 还没有为其分配内存
        myobj = new SomeClassOrStrcutName(...);
    else  // 已经分配了内存
        myobj.DoSomething();另外,尽管class和struct在C#里是有区别的(一个在堆中分配内存,另一个在堆栈上分配内存),但它们的使用方法都是一致的,即“先声名,再new,再使用”。不要因为使用struct就不去new,否则仍然会得到异常。
      

  7.   

    someclass obj;
     if (obj==null)
      {
         obj = new someclass();
      }struct 是值类型不能用newsomestruct  sv;
    sv.dosomething();
      

  8.   


    我测试了一下,struct可以用new的
      

  9.   

    struct 和class唯一的不同一个是Value Type,一个十Refrence Type.
    当然都可以用new,一个在Stack上分配,一个在Heap上分配。
    注意他们的构造函数和this指针的使用有些不同。
      

  10.   

    你可以参照Rectangle的设计.定义一个Empty对象.
    如果末设定值,可以用Rectangle.Empty作判断,依此类推
      

  11.   

    struct的new和class的new是不同的。struct的new就是执行一下构造函数创建一个新实例再对所有的字段进行Copy。而class则是在堆上分配一块内存然后再执行构造函数,struct的内存并不是在new的时候分配的,而是在定义的时候分配:如:
    int i;
    string s;之后,i是已经分配了内存空间的,已经作为一个值类型的实例存在,而s只有一个引用,并没有字符串实例。
      

  12.   

    判断是否为null就可以了
    如果没有new内存空间的话,只有一个句柄,那么就是null