C # ekvivalent pro C kód potřebný

hlasů
1

Může mi někdo říct, C # ekvivalent k tomuto C kód?

static const value_string  message_id[] = {

  {0x0000, Foo},
  {0x0001, Bar},
  {0x0002, Fubar},
  ...
  ...
  ...
}
Položena 19/03/2009 v 17:07
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
5
public Enum MessageID { Foo = 0, Bar = 1, Fubar = 2 };

Pak se můžete dostat „řetězec“ verzi pomocí Enum.Format()nebo ToString().

Odpovězeno 19/03/2009 v 17:09
zdroj uživatelem

hlasů
1

Něco jako:

MessageId[] messageIds = new MessageId[] {
    new MessageId(0x0000, "Foo"),
    new MessageId(0x0001, "Bar"),
    new MessageId(0x0002, "Fubar"),
    ...
};

(Tam, kde můžete definovat vhodný MessageIdkonstruktor).

To je nejbližší ekvivalentní ke kódu C - ale měli byste rozhodně zvážit, zda výčtu dle odpovědi tvanfosson to může být vhodnější výběr designu.

Odpovězeno 19/03/2009 v 17:10
zdroj uživatelem

hlasů
0

Nebude přesná shoda. C # neumožňuje staticna constpolích ve třídách. Můžete použít readonly, ačkoli.

Pokud používáte tento v místním rozsahu, pak můžete získat výhodu anonymní psaní a to následujícím způsobem:

var identifierList = new[] {
    new MessageIdentifier(0x0000, "Foo"),
    new MessageIdentifier(0x0001, "Bar"),
    new MessageIdentifier(0x0002, "Fubar"),
    ...
};

Líbí se mi toto řešení lepší, ačkoli.

Odpovězeno 19/03/2009 v 17:12
zdroj uživatelem

hlasů
1

    private static readonly IDictionary<int, string> message_id = new Dictionary<int, string>
        {
            { 0x0000, "Foo" }, 
            { 0x0001, "Bar" }
        };
Odpovězeno 19/03/2009 v 17:12
zdroj uživatelem

hlasů
1
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"},
  ...
  ...
  ...
}

nebo ještě lépe, pokud jej používáte jako slovníku:

private const Dictionary<string, int> message_id = {

   {"Foo", 0},
   {"Bar", 1},
   {"Fubar", 2},
   ...
}

ve kterém řetězec je váš klíč k hodnotě.

Odpovězeno 19/03/2009 v 17:12
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more