最近发生了以下(样本)枚举......
enum Color
{
Red,
Green,
Yellow,
Blue
}
Run Code Online (Sandbox Code Playgroud)
......可以用看似更加类型安全的类替换:
class Color
{
private Color() { }
public static readonly Color Red = new Color();
public static readonly Color Green = new Color();
public static readonly Color Yellow = new Color();
public static readonly Color Blue = new Color();
}
Run Code Online (Sandbox Code Playgroud)
对于"类型安全",我的意思是如果Color是枚举,则以下语句将起作用,但如果Color是上述类则不行:
var nonsenseColor = (Color)17; // works if Color is an enum
Run Code Online (Sandbox Code Playgroud)
1)这种模式是否有广泛接受的名称(用类型安全类替换枚举)?
2)在哪种情况下应该使用枚举,什么时候更合适?
我试图从性能的角度理解两种解决方案中哪一种更受欢迎.例如,我有两段代码:
1)拳击/拆箱
int val = 5;
Session["key"] = val;
int val2 = (int)Session["key"];
Run Code Online (Sandbox Code Playgroud)
2)Casting(IntObj有int属性来存储int)
IntObj val = new IntObj(5);
Session["key"] = val;
int val2 = ((IntObj )Session["key"]).Value;
Run Code Online (Sandbox Code Playgroud)
这些例子之间的内存管理差异是什么?有没有更快的方法来执行此类操作?
注意: Session例如,它可以是任何Dictionary<string, object>