在C#中,为什么我能够使用以下代码编译和运行程序
public class HammingTFTP()
{
//class variables here
public HammingTFTP(string mode, string host, string fileName)
:this()
{
//code here
}
}
我在mac上编码并运行mono 3.6.0。我明白在类声明之后应该没有(),我应该删除:this()。只是想知道为什么这个编译并运行在第一位。这可能是给定版本的mono的错误吗?
答案 0 :(得分:8)
这不是用.NET编译器编译的,但是它与Roslyn编译器一起编译。演示:https://dotnetfiddle.net/HkngI3
这是一个名为"主要构造函数"的C#6.0功能。见The New and Improved C# 6.0
它允许您在声明旁边声明类的主要构造函数,例如:
public class MyClass(string name)
{
public string Name {get; } = name;
}
答案 1 :(得分:1)
Mono 3.6.0已经支持C#6.0中的一些功能,如here所述。
在您的情况下,这是主要构造函数。有关详细信息,请参阅this language preview。
不使用主构造函数,您的代码将转换如下:
public class HammingTFTP
{
// generated via primary constructor
public HammingTFTP()
{
}
//class variables here
public HammingTFTP(string mode, string host, string fileName)
:this()
{
//code here
}
}