簡體   English   中英

決定使C#類靜態

[英]Deciding to make a C# class static

如果我在C#中有一個Utilities.cs類,它只包含靜態方法

例如

public static string DoSomething()
{
    return "something";
}

我應該讓這個類本身是靜態的嗎?

public static Utilities()
{
    ...

使類靜態有什么優勢嗎?

是的你應該。 它阻止人們在不應該實例化的情況下實現它,並使類的目的更加清晰。 閱讀MSDN頁面以獲取更多信息

如果要添加擴展方法,還需要將類標記為靜態

您應該仔細考慮實用程序類。 想想這些方法是否真正屬於那里,或者是否有更多的OO方式。

另請看Jon Skeet的這個問題和答案。

主要優點是它使您的設計意圖更加清晰,並強制執行這些意圖。 例如,你不能從靜態類繼承(即專門化它),你不能創建它的實例(它實際上是一個單例)。 這些都是您的實用程序類的設計意圖。

但是,應謹慎使用靜態類和方法,因為它很難改變程序的行為。 靜態類和方法是非常具體的,不能(輕松)替換,如果您使用接口和構造函數注入的情況。 然而,靜態類和成員可能很有用,但很少。 過度使用靜態技術會降低您的軟件的靈活性,並且更難以測試。

是的,你應該讓它靜止。 使其靜態可防止它被實例化。 它主要用於告訴使用該類的人它只包含靜態方法,這有助於提高可讀性。

只有該靜態類不能包含非靜態成員,因此可以防止您意外添加它們。 同樣如Ray的回答中所提到的,它將使您的代碼更清晰。

暫無
暫無

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

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