为什么在(vb或C#)。net中声明(实例化)没有'new'关键字的值类型

时间:2011-01-19 11:55:29

标签: .net-3.5

为什么在(vb或C#)中没有'new'关键字声明(实例化)值类型.net

2 个答案:

答案 0 :(得分:0)

不必使用new关键字构造值类型,但在原语类型的语言中支持,如整数,字符串等。

换句话说,你通常写这个:

int i = 10;
string s = "test";

但是,如果您定义自己的值类型,要使用初始值声明变量,则需要使用new

Point p = new Point(10, 20);

我认为你需要澄清你在问什么。

答案 1 :(得分:0)

基本上任何原始CLR类型(Object除外)都不需要new

有很多方法可以将这个应用于任何(blittable)值类型,通过不安全,非常类似于C在嵌入式世界中如何完成。

更新

你改变了你的问题。看来你被误导了。除非你在讨论在类初始化时发生的默认值,否则它仍在使用new

示例:

class Foo
{
  Point foo;
}

执行new Foo()时,foo的值会初始化为默认值,这意味着new Point()

以上代码实际上是:

class Foo
{
  Point foo;
  Foo()
  {
    foo = default(Point); // which is new Point()
  }
}