2009-03-19 6 views

Répondre

1
private static readonly IDictionary<int, string> message_id = new Dictionary<int, string> 
     { 
      { 0x0000, "Foo" }, 
      { 0x0001, "Bar" } 
     }; 
+0

C'est encore mieux! – RobIII

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

Ensuite, vous pouvez obtenir la version "chaîne" en utilisant Enum.Format() ou ToString().

+0

D'oh ... pensais-je dans la mauvaise direction. Est-ce que je me sens stupide maintenant ... – RobIII

+0

En fait, j'aime mieux la solution de Bdukes, mais c'est parce que j'ai besoin des données dans un dictionnaire de toute façon. – RobIII

+0

Pas de problème. Cela ressemblait à quelque chose que j'utiliserais enum - en l'absence de tout autre contexte. Vous pouvez également envisager de le charger à partir d'un fichier de configuration plutôt que de le définir dans du code. De cette façon, vous n'aurez pas à recompiler votre application pour ajouter un autre identifiant de message. – tvanfosson

1

Quelque chose comme: (. Si vous définissez un constructeur MessageId approprié)

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

C'est le plus proche équivalent au code C - mais vous devriez certainement examiner si un ENUM selon la réponse de tvanfosson pourrait être un choix de conception plus approprié.

0

Il n'y aura pas de correspondance exacte. C# n'autorise pas static sur les champs const dans les classes. Vous pouvez utiliser readonly, cependant.

Si vous utilisez cette portée locale, vous pouvez obtenir l'avantage de taper anonyme et faire:

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

J'aime this solution mieux, cependant.

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

ou mieux encore, si vous utilisez comme un dictionnaire:

private const Dictionary<string, int> message_id = { 

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

dans lequel la chaîne est la clé de la valeur.