none
c# new的用法 RRS feed

答案

  • c#中一般引用类型需要使用NEW实例化,
    值类型不需要
    但是STRING字符串类型也不需要实例化

    值类型也可以用new实例化,调用默认的构造函数


      1.用于创建对象和调用构造函数

      例:Class_Test MyClass = new Class_Test();

      2.也用于为值类型调用默认的构造函数

      例:int myInt = new int();

      myInt 初始化为 0,它是 int 类型的默认值。该语句的效果等同于:int myInt = 0;

    参照下这里
    http://hi.baidu.com/gnaran/blog/item/45f5b75972ecda86800a18b0.html


    努力+方法=成功
    2010年1月5日 1:15
  • 补充一点 值类型也可以用new实例化,调用默认的构造函数 不仅可以调用默认构造函数 也可以调用带有参数的构造函数,比如自定义的struct等
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2010年1月5日 1:51
    版主
  • lpc67,你好!
          这个问题比较容易总结:除了编译器支持的基元类型(例如int,double等),其他类型的都应该用new语法来初始化!
          但是struct比较特殊,有时可以不使用new的方式来初始化,关于这个类型,我曾多次写文章来说明它:
          http://www.cnblogs.com/xuefeng1982/archive/2009/12/06/1618251.html

          另外,一个事实是这样的,对于编译器支持的基元类型(例如int,double等),如果你愿意,同样可以用new语法来初始化:
          int i=new int();  //i被初始化为0

          当然,编译器提供了简洁的语法:
          int i=0;    //i被初始化为0

          希望这个解释对你有帮助!
    周雪峰
    2010年1月5日 2:43
    版主
  • Tang版主,你好!
           略微补充一下你的说法,实际上如果你不为值类型提供自定义的构造函数,那么C#编译器不会为值类型生成默认的构造函数,通过查看IL可以验证这一点,这个和引用类型不同!
    周雪峰
    2010年1月5日 2:25
    版主

全部回复

  • c#中一般引用类型需要使用NEW实例化,
    值类型不需要
    但是STRING字符串类型也不需要实例化

    值类型也可以用new实例化,调用默认的构造函数


      1.用于创建对象和调用构造函数

      例:Class_Test MyClass = new Class_Test();

      2.也用于为值类型调用默认的构造函数

      例:int myInt = new int();

      myInt 初始化为 0,它是 int 类型的默认值。该语句的效果等同于:int myInt = 0;

    参照下这里
    http://hi.baidu.com/gnaran/blog/item/45f5b75972ecda86800a18b0.html


    努力+方法=成功
    2010年1月5日 1:15
  • 补充一点 值类型也可以用new实例化,调用默认的构造函数 不仅可以调用默认构造函数 也可以调用带有参数的构造函数,比如自定义的struct等
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2010年1月5日 1:51
    版主
  • Tang版主,你好!
           略微补充一下你的说法,实际上如果你不为值类型提供自定义的构造函数,那么C#编译器不会为值类型生成默认的构造函数,通过查看IL可以验证这一点,这个和引用类型不同!
    周雪峰
    2010年1月5日 2:25
    版主
  • lpc67,你好!
          这个问题比较容易总结:除了编译器支持的基元类型(例如int,double等),其他类型的都应该用new语法来初始化!
          但是struct比较特殊,有时可以不使用new的方式来初始化,关于这个类型,我曾多次写文章来说明它:
          http://www.cnblogs.com/xuefeng1982/archive/2009/12/06/1618251.html

          另外,一个事实是这样的,对于编译器支持的基元类型(例如int,double等),如果你愿意,同样可以用new语法来初始化:
          int i=new int();  //i被初始化为0

          当然,编译器提供了简洁的语法:
          int i=0;    //i被初始化为0

          希望这个解释对你有帮助!
    周雪峰
    2010年1月5日 2:43
    版主
  • 谢谢各位非常有用的帮助!
    2010年1月5日 4:46
  • 不客气啊!
    周雪峰
    2010年1月5日 5:01
    版主