.net 3.5 为什么在没有'的情况下声明(实例化)值类型;新';(vb或C#)net中的关键字

.net 3.5 为什么在没有'的情况下声明(实例化)值类型;新';(vb或C#)net中的关键字,.net-3.5,.net 3.5,为什么在(vb或C#)中声明(实例化)值类型而不使用“new”关键字。net值类型不一定是在不使用new关键字的情况下构造的,但是语言中支持基元类型,如整数、字符串等 换句话说,您通常会这样写: int i = 10; string s = "test"; 但是,如果定义自己的值类型,要用初始值声明变量,则需要使用new: Point p = new Point(10, 20); 我认为您需要澄清您的问题。基本上,除了Object之外,任何基本的CLR类型都不需要new 也有一些方法可以将其

为什么在(vb或C#)中声明(实例化)值类型而不使用“new”关键字。net

值类型不一定是在不使用
new
关键字的情况下构造的,但是语言中支持基元类型,如整数、字符串等

换句话说,您通常会这样写:

int i = 10;
string s = "test";
但是,如果定义自己的值类型,要用初始值声明变量,则需要使用
new

Point p = new Point(10, 20);

我认为您需要澄清您的问题。

基本上,除了Object之外,任何基本的CLR类型都不需要
new

也有一些方法可以将其应用于任何(blittable)valuetype,方法是变得不安全,也非常类似于在C中特别是在嵌入式世界中所做的事情

更新:

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

例如:

class Foo
{
  Point foo;
}
执行
new Foo()
时,
Foo
的值初始化为其默认值,这意味着
new Point()

上述代码实际上是:

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

.NET没有“new”关键字。你必须指明一种特定的语言。此外,你的问题很模糊。你问“为什么”。。。啊,我以为上面写着“什么”我想我知道他的意思,看看我的答案。我也很困惑(