J'ai essayé cela de différentes manières, mais j'arrive à la conclusion que cela ne peut pas être fait. C'est une fonctionnalité de langue que j'ai appréciée dans d'autres langues dans le passé. Est-ce juste quelque chose que je devrais simplement radier?
Réponses
Trop de publicités?Non, les indexeurs statiques ne sont pas pris en charge en C #. Contrairement à d'autres réponses, cependant, je vois comment il pourrait facilement être utile de les avoir. Considérer:
Encoding x = Encoding[28591]; // Equivalent to Encoding.GetEncoding(28591)
Encoding y = Encoding["Foo"]; // Equivalent to Encoding.GetEncoding("Foo")
Il serait relativement rarement utilisé, je suppose, mais je pense que c'est étrange qu'il soit interdit - il donne l'asymétrie sans raison particulière pour autant que je puisse voir.
Vous pouvez simuler des indexeurs statiques à l'aide de propriétés indexées statiques:
public class MyEncoding
{
public sealed class EncodingIndexer
{
public Encoding this[string name]
{
get { return Encoding.GetEncoding(name); }
}
public Encoding this[int codepage]
{
get { return Encoding.GetEncoding(codepage); }
}
}
private static EncodingIndexer StaticIndexer;
public static EncodingIndexer Items
{
get { return StaticIndexer ?? (StaticIndexer = new EncodingIndexer()); }
}
}
Usage:
Encoding x = MyEncoding.Items[28591]; // Equivalent to Encoding.GetEncoding(28591)
Encoding y = MyEncoding.Items["Foo"]; // Equivalent to Encoding.GetEncoding("Foo")
Si je comprends la question, les indexeurs statiques SONT pris en charge pour C # en général; c'est juste que toutes les classes ne les mettent pas en œuvre.
Voir cet article à titre d'exemple, avec un exemple de code pour les implémenter. http://www.csharphelp.com/archives/archive140.html