Почитываю документацию по C#, с целью уменьшения пробелов в знаниях и некоторых тонкостях.
Фраза из MSDN:
It is not possible to modify an abstract class with the sealed (C# Reference) modifier because the two modifers have opposite meanings. The sealed modifier prevents a class from being inherited and the abstract modifier requires a class to be inherited.
Перевод из MSDN:
Абстрактный класс с модификатором sealed (Справочник по C#) изменить нельзя, поскольку sealed предотвращает наследование класса
Вопрос: что имел в виду переводчик в словах "изменить нельзя". Изменить количество свойств/полей/методов и т.д. нельзя? Можно.
Так вот, следует переводить так:
Использование модификатора sealed с классом, помеченным модификатором abstract, невозможно из-за того что данные модификаторы имеют противоположный смысл. Модификатор sealed запрещает наследование данного класса, а abstract требует, чтобы данный класс был обязательно унаследован.
По теме: безусловно, подобных смысловых ошибок достаточно много в переводах. Просто часто встречаются люди, которые считают, что раз они русские, то и должны читать документацию на русском, и как это можно, читая на английском, гораздо лучше понимать суть документации. Лишний повод задуматься.
Что касается класса, то как раз класс? объявленный как static, внутри сборки превращается в одновременно abstract и sealed. Кто не верит - ildasm в помощь.
static class Point
{
static int m_x1;
static int x1 { get { return m_x1; } }
static int x2;
static Point()
{ }
}
Выглядит следующим образом: