簡體   English   中英

將靜態方法放入靜態類與將實例方法放入靜態類有什么區別?

[英]What is the difference between putting a static method in a static class and putting an instance method in a static class?

這兩個類有什么區別?

public static class MyClass
{
    public static string SayHello()
    {
        return "Hello";
    }
}

public static class MyClass
{
    public string SayHello()
    {
        return "Hello";
    }
}

由於第二個SayHello方法在靜態類上,因此它也是靜態的嗎? 如果是這樣,當在靜態類中定義方法時,是否有任何理由在方法上包括static關鍵字?

第二個示例甚至無法在c#中完成,您將得到編譯時錯誤:

'SayHello':無法在靜態類中聲明實例成員

因此,您必須使用static關鍵字聲明static calss的成員。

靜態類無法實例化,因此您的第二段代碼不可編譯。 非靜態方法只能在實例化的類中訪問。

“ ...因此,創建靜態類與創建僅包含靜態成員和私有構造函數的類非常相似。私有構造函數可防止實例化該類。

使用靜態類的優點是編譯器可以檢查以確保沒有意外添加任何實例成員。 編譯器將保證不能創建此類的實例。”

http://msdn.microsoft.com/zh-CN/library/79b3xss3(v=vs.80).aspx

靜態類是密封的,不能包含實例成員。 靜態方法是Type的一部分,而不是實例,並且靜態方法無法訪問實例成員。 靜態方法不能是虛擬的,但是可以重載。 靜態方法還會發出“ call” IL操作碼,而不是“ callvirt”。

靜態類具有一個不帶任何參數的靜態構造函數,並且在首次使用該類型之前會被調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM