Какая разница между статическим методом struct и методом статического класса?
Недавно я обнаружил, что структуры в С# могут иметь методы.
Вполне случайно, я обнаружил, что использовал статический метод пустой структуры в моем коде, а не статический метод статического класса, с которым, как я думал, я работает!
например.
public struct Foo
{
public static void Bar(Param param)
{
...
}
}
На данный момент он не используется как структура, поскольку он вообще не имеет свойств!
Отличается ли это от использования статического метода класса (статического или иного)? Есть ли какие-то причины предпочесть друг другу? (Моя кишка говорит мне, что использование статического метода struct, как минимум, менее интуитивно понятное)
Ответы
Ответ 1
Нет, статические члены относятся к типу, а не к экземплярам типа. Нет никакой разницы (ни в отношении производительности, ни семантики) между объявлением статических членов класса и статических членов структуры.
Важно отметить, что если функция типа только содержит статические члены, вместо этого вы должны использовать статический класс. С помощью structs существует неявный и неизменный публичный конструктор без аргументов. Если тип не будет иметь каких-либо методов экземпляра, следует удалить возможность создания экземпляров. Объявление класса static
совпадает с объявлением его abstract sealed
, поэтому разработчики не смогут случайно создать экземпляры, которые не имеют никакой цели.
Ответ 2
Поведение ничем не отличается. С# bastardized structs, значительно увеличивая пересечение структур и функций класса. Лично я бы просто использовал класс, потому что мне кажется более правильным для меня (конечно, больше в соответствии с соглашениями на большинстве языков).