我可以创建一个与类同名的函数吗?

时间:2011-03-24 06:51:09

标签: c#

我想使用C#创建一个与其类同名的函数。

示例代码段:

public class MyCustomer
{
    public MyCustomer()
    {
    }

    public void MyCustomer()
    {
    }
}

如果我尝试编译它,Visual studio会抛出错误。

7 个答案:

答案 0 :(得分:5)

您无法创建与类名同名的函数。与类名同名的函数保留给构造函数。

答案 1 :(得分:2)

您不能拥有与类名相同的方法名void MyCustomer() - 它是为构造函数public MyCustomer()保留的

答案 2 :(得分:2)

重命名该功能。严重的是,函数名称应该表明该方法的效果。

因此将其更改为ShowCustomerDetails或CreateMyCustomer或...

答案 3 :(得分:2)

正如其他人所说,你不能这样做。仅为了清楚起见,语言规范参考(使用C#4规范)是第10.3节(强调我的):

  

实例构造函数,析构函数和静态构造函数必须与紧邻的类具有相同的名称。 所有其他成员的名称必须与紧邻的类名称不同。

所以你可以使用与封闭类同名的方法创建一个嵌套类:

public class MyCustomer
{
    public class Nested
    {
        public void MyCustomer() {}
    }
}

...但我强烈建议您不要这样做。

你能否首先告诉我们为什么你想要这样做?

答案 4 :(得分:1)

您的函数名称不能与类名相同。这是为构造函数

保留的

答案 5 :(得分:1)

与类名同名的函数称为构造函数。它在创建对象时执行。您可以拥有多个构造函数(构造函数重载),但在这种情况下,您将拥有具有不同参数集的构造函数。例如:

public MyCustomer()
{}

public MyCustomer(int x)
{
  // use the x variable.
}

另一个重点是构造函数没有返回类型。

答案 6 :(得分:1)

简单地说你不能创造它,你想要什么。我想你需要阅读有关构造函数的内容。 类名仅被视为该类的保留关键字,并且仅允许用户使用构造函数名称。框架不允许您将其与void /任何返回类型一起用于方法名称。