2011-10-18 188 views
4

將大多數變量放在表單中的類級別是不好的做法嗎?這些會被視爲全局變量嗎?Winform變量範圍

public partial class Form1 : Form 
{ 
    private string mode; 
    private int x, y; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 
} 

我在多個控件中使用變量時,我在類級別聲明它們。

回答

2

這些將被視爲類級別的全局變量(以區別於應用程序全局變量)。在這種情況下,更重要的區別是它們是類private

級別的全局變量有它們的用途,所以我絕對不會把它稱爲一個壞習慣。私人級全局變量的一個很好的用法是當你計劃通過property accessors公開它們時。例如:

  • public readonly其值由您的班級內部邏輯控制的屬性。

  • public性質既setget存取(啓用自定義驗證邏輯的制定者。)

不過,我會說這是一個很好的做法,使地方的事情,除非另有必要。其原因是,你必須屬於一個類的實例較少可變的狀態,因此對於這樣的錯誤的可能性更小:

private int EvilMethod1() { 
    x = (int) Math.Pow((double) y, 2); 
    return x; 
} 

private int EvilMethod2() { 
    y = (x + y) * 2;      
    return y; 
} 

// Assignments depend on the current values of x and y, 
// as well as yielding unexpected side effects. 
private void PureEvil() 
{ 
    // Return value depends on current y; has side effect on x while assigning y. 
    y = EvilMethod1(); 

    // Return value depends on current x and y; has side effect on y while assigning x. 
    x = EvilMethod2(); 
} 
0

他們是私有的類Form1

0

不知道你的形式的意圖是什麼,很難說你在做什麼是好還是壞。這裏顯示的變量具有類作用域,並且由於它們是私有的,因此它們不能在Form1之外訪問,並且不被視爲「全局」。

如果您確實需要全局變量,請使用私有靜態變量和公共靜態訪問器/增變器(C#中的屬性)創建靜態類,並通過公共屬性訪問該變量。以this answer爲例。

4

我從問題中得到的結論是,如果您使用的是不依賴於任何形式的單獨形式,那麼所有這些變量都將是該類的私有變量。如果表單是從其他地方調用的。那麼它也將是私有變量。如果你真的想做出清晰的設計,那麼你可以通過私有變量創建公共屬性,並將其暴露給其他類。

通過這種方式,您可以通過創建只讀屬性來將對其他類的限制訪問權限設置爲私有變量,以便其他類不能修改但可以訪問它。

1

這要看使用什麼變量。

如果僅在單一方法中使用它們,則它們應該是該方法的本地方法。

如果他們描述類的狀態並在多個地方使用,則應聲明爲類成員。

2

這些不被視爲全局變量。它們僅在Form1類中是全局的,而不是整個程序。