Разве статические индексаторы не поддерживаются в C#? [дубликат]

Этот вопрос уже имеет ответ здесь:

Я пробовал это несколько различных путей, но я сделал вывод, что он не может быть сделан. Это - функция языка, которой я пользовался с других языков в прошлом. Это - просто что-то, что я должен просто списать?

35
задан Kilhoffer 30 September 2008 в 19:09
поделиться

1 ответ

Вы можете моделировать статические индексаторы, используя статические индексированные свойства:

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()); }
    }
}

Использование:

Encoding x = MyEncoding.Items[28591]; // Equivalent to Encoding.GetEncoding(28591)   
Encoding y = MyEncoding.Items["Foo"]; // Equivalent to Encoding.GetEncoding("Foo")   
16
ответ дан 27 November 2019 в 06:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: