C#. Возможна ли перегрузка статических классов?
Я знаю, что у обычных классов перегрузка невозможна из-за непонятности к какому именно классу объект будет принадлежать. А со статическими(static) как? У них не может быть объектов. Я просто хотел бы добавить насколько методов к классу File (эти методы пока находятся в классе с другим именем).
Ответы (1 шт):
Ну да, что такое "перегрузка классов"? Вот добавить насколько методов к классу 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
.