0

我想用 C# 程序控制另一个设备,这个设备有类似寄存器用于读写。所以我搜索了一些东西来输入所有寄存器号,以获得更好的人类可读代码并拥有中央配置位置。所有寄存器都使用一个 uint 值。

我搜索这样的东西:

public enum EISCJoin : uint
{
    Read_Connect = 1,
    Read_Temp = 2,
    Read_Switch = 3,
    Write_Connect = 1,
    Write_Temp = 2,
    Write_Switch = 3,
}

switch (args.Sig.Number) //uint value
{   
    case (uint)EISC.Read_Connect:
        {
            args.SendValue[(uint)Write_Connect] = 1;
            ...
            break;
        }
    case (uint)EISC.Read_Temp:
        {
            args.SendValue[(uint)Write_Temp] = 1;
            ...
            break;
        }
    case (uint)EISC.Read_Switch:
        {
            args.SendValue[(uint)Write_Switch] = 1;
            ...
            break;
        }
}

我的问题是我不想在我的源代码中将 ENUM 值转换成数千次,而我所知道的是枚举不可能进行隐式对话。

有人有一个好主意来创建一个 uint 值的常量列表吗?

4

2 回答 2

3

您需要转换数字:

switch (args.Sig.Number)

switch ((EISCJoin)args.Sig.Number)

另一种方法是使用静态类和常量 uint:

static public class EISCJoin
{
    public const uint Read_Connect = 1;
    public const uint Read_Temp = 2;
    // and so on
}
于 2015-11-17T19:09:06.777 回答
0

我必须使用制造商的框架并且无法访问所有类,将所有类修改为枚举不是一个选项。

我使用一个值最多的时间只有1-2次,所以我最多的时候将这个值转换为1次使用。

看起来我必须使用带有 const uint 变量的静态类。

谢谢你的帮助

于 2015-11-17T19:34:58.470 回答