簡體   English   中英

C#中的靜態變量與靜態方法

[英]Static variable vs Static method in C#

據我所知,不建議在Web應用程序中使用靜態變量。 現在我的問題是,是否建議在Web應用程序中使用靜態方法?靜態方法是否將系統內存用作靜態變量? 請澄清我的疑問。 提前感謝。

是的,建議在Web應用程序中使用靜態方法。

靜態變量在Web應用程序中的使用非常有限,因為所有線程將共享同一變量。

當涉及到方法時,所有線程都訪問同一個方法不是問題,因為方法本身不會改變。 對於方法的每次調用,方法中的本地數據仍然是分開的,因此,多個線程同時調用同一方法不是問題。

一般來說,如果一個方法不依賴任何實例數據,則它應該是靜態的。 也就是說,如果某個方法可以是靜態的(該方法沒有其他機會),則應該是靜態的。

您應該避免使用靜態變量的原因是,它們通常用於提供全局狀態 這會破壞封裝,並使維護和調試程序變得更加困難,因為任何代碼段都可能更改您的變量。

在像ASP.NET這樣的線程環境中,由於多個線程可能編輯具有不確定結果的同一靜態變量的內容,這使情況變得更糟。

另一方面,靜態方法可能是一件非常好的事情。 它們提供了參考透明性 ,這意味着相同的輸入將始終產生相同的輸出,並且不會因更改狀態而產生副作用。 由於線程無法通過更改共享變量來影響其他線程的處理,因此這使得多線程訪問更容易推理(假設您當然沒有使用靜態變量)。

它也可以使單元測試變得更輕松,更強大,因為您不需要在輸入和預期輸出旁邊測試世界的基礎狀態。

建議避免使用靜態數據,因為如果數據可變,則會引入並發問題。

不需要避免使用不可變靜態數據的靜態方法。 有時,它們對於不需要特定於任何特定實例的功能有意義。

暫無
暫無

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

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