Dan*_*ane 4 c# methods class object
new() 和 new class() 有什么区别,因为看起来两者运行起来没有区别。
Human John = new();
Run Code Online (Sandbox Code Playgroud)
或者
Human John = new Human();
Run Code Online (Sandbox Code Playgroud)
假设在这种情况下它没有任何区别,任何人都可以提供一个示例,说明两种情况都会导致每个代码产生不同的输出。谢谢!
new()你问的是和之间的区别new class()。目前还不清楚class所指的是什么。哪一堂课?
如果它可以是任何类,那么new()和new class()会产生不同输出的一个简单情况是,class是您要分配给它的类型的派生类。object x = new();将创建 的一个实例object,并object x = new StringBuilder();创建一个新的StringBuilder.
如果您的意思class是必须与您要分配给的类型相同,那么当您分配给可为空的类型时,new()和会产生不同的输出。new class()
int? x = new(); // same as int? x = 0;
int? x = new int?(); // same as int? x = null;
Run Code Online (Sandbox Code Playgroud)
因为本例中的目标类型是不可为 null 的int类型。
另请注意,有时您分配的类型无法使用语法实例化new class()- 例如当它是接口、抽象类、数组类型等时。在这些情况下,new()也将不起作用。
也有一些情况是new()无法编译,但new class()对于某些class. 例如var x = new();,SomeGenericMethod(new())其中SomeGenericMethod需要第一个参数的类型来推断类型参数。这些不起作用,因为编译器无法确定new()应该实例化什么类型。另请参阅此问题中的一个有趣的案例。
在规范草案中了解有关new(),又名目标类型new表达式 的更多信息。