我想用C#创建一个和它的类名相同的函数。我可以创建一个与班级同名的功能吗?
示例代码段:
public class MyCustomer
{
public MyCustomer()
{
}
public void MyCustomer()
{
}
}
如果我尝试编译它Visual Studio是抛出一个错误。
我想用C#创建一个和它的类名相同的函数。我可以创建一个与班级同名的功能吗?
示例代码段:
public class MyCustomer
{
public MyCustomer()
{
}
public void MyCustomer()
{
}
}
如果我尝试编译它Visual Studio是抛出一个错误。
您不能创建与类名同名的函数。与类名同名的函数被保留给构造函数。
你不能有方法名void MyCustomer()
是相同的类名 - 这是预留给构造public MyCustomer()
重命名功能。认真的一个函数名应该表明该方法的效果。
所以将其更改为ShowCustomerDetails或CreateMyCustomer或...
你不能有一个函数名一样的类名。这是为构造函数保留的
与类名称同名的函数称为构造函数。它在创建对象时执行。你可以有多个构造函数(构造函数重载),但在这种情况下,你将拥有具有不同参数集的构造函数。例如:
public MyCustomer()
{}
public MyCustomer(int x)
{
// use the x variable.
}
另一个重要的一点是构造函数没有返回类型。
年后,但是您甚至无法将'void'指定为构造函数的返回类型。你必须使用'public MyCustomer(int x)'。 – Andrew 2015-01-28 19:05:28
@Andrew是的,你是对的..这是一个复制粘贴问题,我看了。感谢纠正..我已经更新了答案 – 2015-01-29 02:49:14
正如其他人所说,你不能这样做。只是为了清楚起见,虽然,语言规范引用(使用C#4规格)是一款10.3(重点煤矿):
实例构造函数,析构函数和静态构造函数必须具有相同的名称作为直接封闭类。 所有其他成员的名称必须与直接包含的类的名称不同。
所以,你可以创建与具有相同的名称作为封装类的方法的嵌套类:
public class MyCustomer
{
public class Nested
{
public void MyCustomer() {}
}
}
...但我强烈建议您不要这样做。
你能告诉我们为什么你想这样做呢?
简单地说,你不能创建它,你想要什么。我认为你需要阅读有关构造函数。 类名只被认为是该类的保留关键字,并且只允许用户使用构造函数名。在那里框架不允许你使用void /方法名称的任何返回类型。
是的,我同意@lalit。这是我认为的完美解释。 – Liladhar 2011-03-24 07:34:43
欢迎来到StackOverflow!您可能希望查看[常见问题](http://stackoverflow.com/faq)和[关于提问的方便指南](http://stackoverflow.com/questions/how-to-ask)。我编辑了一些不合适的东西,并添加了一些[格式化](http://stackoverflow.com/editing-help)。 **你能告诉我们这个代码产生什么特定的错误吗?** – Charles 2011-03-24 06:54:07
你为什么需要**来?你不能称之为类似但不一样的东西吗?使用与类相同的名称保留给构造函数。 – 2011-03-24 06:54:28
您不能将声明的类名称用作其成员之一。 – KaeL 2011-03-24 06:54:47