2011-03-27 90 views
1

现在我的课被设置为:一个类可以返回它自己的静态实例吗? (在C#)

enum Unit{Inches,Centimeters};

后来我有一个将所有这些各部分的性质为我的课的实例变量的一个步骤。例如:

int unitBase; //10 for metric, 16 for american 
int label; 
switch(unit) 
{ 
    case Unit.Inches: unitBase = 16; unitLabel = "\"";break; 
    case Unit.Centimeters: unitBase = 10; unitLabel = "cm";break; 
} 

我宁愿将此全部存储在Unit类或结构中。然后,我希望能够像访问颜色一样访问它,例如。你说Color.Blue为蓝色,我想说英寸Unit.Inches ...这就是为什么我不做单位基类,只是扩展它。

我知道有一种方法可以做到这一点!任何人都可以启发我吗?

谢谢!

+2

静态和实例不要一起去,我觉得什么youre试图做是有道理的,但你已描述是错误的 – 2011-03-27 22:49:09

+0

我怎么能形容呢?我不知道我想要做什么叫做...... – 2011-03-27 22:51:40

+0

你是在描述一个单身人士吗?或者你是用静态方法为每个单元类型描述一个静态类? – 2011-03-27 22:53:21

回答

8

您可以使用静态属性:

public enum UnitSpecifier{Inches,Centimeters}; 

public class Unit 
{ 
    int unitBase; //10 for metric, 16 for american 
    string unitLabel; 

    public Unit(UnitSpecifier unit) 
    { 
     switch (unit) 
     { 
      case UnitSpecifier.Inches: unitBase = 16; unitLabel = @"\"; break; 
      case UnitSpecifier.Centimeters: unitBase = 10; unitLabel = "cm"; break; 
     } 
    } 

    public static readonly Unit Inches = new Unit(UnitSpecifier.Inches); 
} 
1
public struct Unit { 
    public static readonly Unit Inches = new Unit(16, "\""); 
    public static readonly Unit Centimeters = new Unit(10, "cm"); 

    private readonly int _unitBase; 
    private readonly string _unitLabel; 

    static Unit() { } 

    private Unit(int unitBase, string unitLabel) { 
     this._unitBase = unitBase; 
     this._unitLabel = unitLabel; 
    } 

    public int UnitBase { 
     get { return this._unitBase; } 
    } 

    public string UnitLabel { 
     get { return this._unitLabel; } 
    } 
} 
相关问题