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)

もう 1 つの方法は、静的クラスと定数 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 に答える