誰も私にこのCコードのC#を教えてもらえますか?Cコードに相当するC#が必要です
static const value_string message_id[] = {
{0x0000, "Foo"},
{0x0001, "Bar"},
{0x0002, "Fubar"},
...
...
...
}
誰も私にこのCコードのC#を教えてもらえますか?Cコードに相当するC#が必要です
static const value_string message_id[] = {
{0x0000, "Foo"},
{0x0001, "Bar"},
{0x0002, "Fubar"},
...
...
...
}
private static readonly IDictionary<int, string> message_id = new Dictionary<int, string>
{
{ 0x0000, "Foo" },
{ 0x0001, "Bar" }
};
public Enum MessageID { Foo = 0, Bar = 1, Fubar = 2 };
次に、あなたはEnum.Format()
かToString()
を使用して "文字列" のバージョンを取得することができます。
D'oh ...私は間違った方向に考えていました。今私は愚かだと感じますか? – RobIII
私は実際にbdukesのソリューションがさらに好きですが、それはとにかく辞書のデータが必要なためです。 – RobIII
問題ありません。それはちょうど私が列挙を使う何かのように見えました。また、コードで定義するのではなく、設定ファイルから読み込むことを検討することもできます。そうすれば、別のメッセージIDを追加するためにアプリケーションを再コンパイルする必要はありません。 – tvanfosson
ような何か:
MessageId[] messageIds = new MessageId[] {
new MessageId(0x0000, "Foo"),
new MessageId(0x0001, "Bar"),
new MessageId(0x0002, "Fubar"),
...
};
(。あなたは適切なMessageId
コンストラクタを定義する場合は)
Cコードに最も近い同等だ - しかし、あなたは確かにあたりtvanfossonの答えとして列挙するかどうかを検討すべきかもしれませんより適切な設計の選択肢になります。
完全一致はありません。 C#ではstatic
がconst
のクラスのフィールドを許可していません。あなたはreadonly
を使用することができます。あなたはローカルスコープでこれを使用している場合は、あなたが匿名タイピングの利益を取得し、これを行うことができます
:
var identifierList = new[] {
new MessageIdentifier(0x0000, "Foo"),
new MessageIdentifier(0x0001, "Bar"),
new MessageIdentifier(0x0002, "Fubar"),
...
};
でも、私はより良いthis solutionが好き。いっそ
private const value_string message_id[] = {
new value_string() { prop1 = 0x0000, prop2 = "Foo"},
new value_string() { prop1 = 0x0001, prop2 = "Bar"},
new value_string() { prop1 = 0x0002, prop2 = "Fubar"},
...
...
...
}
か、あなたは辞書のようにそれを使用している場合:
private const Dictionary<string, int> message_id = {
{"Foo", 0},
{"Bar", 1},
{"Fubar", 2},
...
}
がいる文字列値への鍵です。
これはさらに素晴らしいです! – RobIII