我想用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