2010-11-12 88 views
0

我有很多常量需要在我的一個類中移動,但我不允許使用成員變量。有什麼選擇?成員變量不是一個選項

這裏是我的初步嘗試:

private void MyConstants(out int textSize, out int paddingValue, out int borderType, ...) 
{ 
    //Set them here 
} 

private Method1() 
{ 
    int textSize = 0; 
    int paddingValue = 0; 
    int borderValue = 0; 
    .... 

    MyConstants(out textSize, out paddingValue, out borderValue) 
} 

private Method2() 
{ 
    int textSize = 0; 
    int paddingValue = 0; 
    int borderValue = 0; 
    .... 

    MyConstants(out textSize, out paddingValue, out borderValue) 
} 

//Many more methods...Just seems to repetitive. 
+0

創建常量? – siride 2010-11-12 01:13:51

+1

你不允許在任何地方使用成員變量,或者僅僅在這個類中使用成員變量?這個作業也是?爲什麼你不允許使用會員變量? – 2010-11-12 01:16:05

+0

只是在這一類。沒有不做作業。我的手綁在一起。 – Rod 2010-11-12 01:17:49

回答

1

使用私有類或結構體。

private class Variables { 
    public int textSize; 
    public int paddingValue; 
    public int borderValue; 
} 

private Variables MyConstants{ 
    get{ return new Variables(){textSize=1, paddingValue=2, borderValue=3};} 
} 
+0

可否請舉例說明一點。在示例中包含2個常量。 – Rod 2010-11-12 01:23:13

+0

只需定義那些填充,文本大小和私有類中的內容。 – xandy 2010-11-12 01:30:36

0

如果您需要在構造函數初始化嘗試使用只讀上,而不是常量。 編輯1: 您可以創建一個持有專用字典的類:如鍵和值。 在其中放置了一個「對象LoadConstant(string)」方法,該方法將撤回數據。

public static class ConstantManager { 
private static Hashtable _consts = new Hashtable();  
private static const keyName = "Name 1"; 
public static void ConstantManager() 
{ 
    _consts[keyName] = ...; 
} 
public static Hashtable GetConstants() 
{ 
    var _copy = new Hashtable(_consts); 
    return _copy; 
} 
} 

public OtherClass{ 
public void Method() 
{ 
    var consts = ConstantManager.GetConstants(); 
    var a = consts[ConstantManager.keyName]; 
} 
} 
相關問題