C# 如何实现Int32的模拟?
这个问题在severel变体中已经被提出了 基本上是:如何用C中的常数初始化一个结构 答案是-这在c中是不可能的 但是。。。我会写C# 如何实现Int32的模拟?,c#,struct,constants,C#,Struct,Constants,这个问题在severel变体中已经被提出了 基本上是:如何用C中的常数初始化一个结构 答案是-这在c中是不可能的 但是。。。我会写 public class TModel2 { public const Int32 R32 = 32; public const Int32 R33 = 33; } [TestMethod] public void TestMethod1() { Int32 currentModel = TModel2.R33; switch (c
public class TModel2
{
public const Int32 R32 = 32;
public const Int32 R33 = 33;
}
[TestMethod]
public void TestMethod1()
{
Int32 currentModel = TModel2.R33;
switch (currentModel)
{
case TModel2.R32:
break;
case TModel2.R33:
break;
}
}
如果我检查Int32的源代码,它被定义为一个结构。
我可以轻松地重复Int32的代码,并将其命名为TModelItem。
我只想写下:
public class TModel1
{
public const TModelItem R32 = 32;
public const TModelItem R33 = 33;
}
[TestMethod]
public void TestMethod2()
{
TModelItem currentModel = TModel1.R33;
switch (currentModel)
{
case TModel1.R32:
break;
case TModel1.R33:
break;
}
}
但我不能让它工作。
是的,TModelItem是重复的Int32,代码甚至没有编译
我如何让它工作?
或
什么可以满足我的需要?我需要int或long int或string作为基础。就像前面提到的注释一样,这是不可能的 我不知道这是否满足你的需要。但你能做的是这样的:
public readonly struct TModelItem
{
public int Integer { get; }
public TModelItem(int integer)
{
Integer = integer;
}
public static implicit operator TModelItem(int integer)
{
return new TModelItem(integer);
}
public static implicit operator int(TModelItem tModelItem)
{
return tModelItem.Integer;
}
}
我如何让它工作?调整编译器。。。答案仍然是一样的:这是不可能的。32不是编译时常量TModelItem值。请参阅。
public class TModel1
{
public static readonly TModelItem R32 = 32;
public static readonly TModelItem R33 = 33;
}
[TestMethod]
public void TestMethod2()
{
TModelItem currentModel = TModel1.R33;
switch (currentModel)
{
case 32:
break;
case 33:
break;
}
}