C#. Возможна ли перегрузка статических классов?

Я знаю, что у обычных классов перегрузка невозможна из-за непонятности к какому именно классу объект будет принадлежать. А со статическими(static) как? У них не может быть объектов. Я просто хотел бы добавить насколько методов к классу File (эти методы пока находятся в классе с другим именем).


Ответы (1 шт):

Автор решения: rotabor

Ну да, что такое "перегрузка классов"? Вот добавить насколько методов к классу File - это понятно.

Как уже подсказал @EvgeniyZ, можно использовать методы расширения, но таким образом нельзя расширить класс статическими методами.

using System;
static class SuperString {
    public static string Dyr(this string s) {
        return s.Substring(0,2);
    }
    public static bool IsNullOrEmptyOrWhiteSpace(string s) {
        return string.IsNullOrEmpty(s) || string.IsNullOrWhiteSpace(s);
    }
}
static class Program {
    static void Main() {
        Console.WriteLine("asdf".Dyr());
        Console.WriteLine(SuperString.IsNullOrEmptyOrWhiteSpace("asdf"));
    }
}

Здесь Dyr - метод, расширяющий класс String.

Если подумать, то расширять класс статическими методами в существующих ограничениях смысла нет, так как мы не сможем получить доступ к приватным членам класса. Поэтому статические методы, использующие объекты нужного типа, могут быть созданы в любом классе. Как пример, метод IsNullOrEmptyOrWhiteSpace.

→ Ссылка