воскресенье, 16 мая 2010 г.

1001-я причина, почему документацию лучше читать на английском языке (for russians)

Почитываю документацию по 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()
        {  }
    }
Выглядит следующим образом: