Есть ли C # эквивалент областей модификаторов доступа в C ++ - PullRequest
3 голосов
/ 10 января 2009

Возможно объявить переменные с приведенной ниже структурой в C ++

private:
public:
protected:
    float bla1;
    float bla2;
    float bla3;

Есть ли эквивалент в C #? Кажется, довольно утомительно повторяться;

protected float bla1;
protected float bla2;
protected float bla3;

Ответы [ 4 ]

9 голосов
/ 10 января 2009

Нет. Доступ указывается в каждой декларации.

Преимущество этого заключается в том, что расположение метода в исходном файле не влияет на поведение. Это означает, что вы можете безнаказанно перемещать методы и свойства (например, кластеризовать связанные методы). То же самое не вполне верно для полей - возможно сделать порядок объявления полей значимым. По общему признанию, лучше не делать этого в первую очередь ...

8 голосов
/ 10 января 2009

Нет, такого не бывает. На самом деле, он предназначен для того, чтобы сделать код более читабельным. Это относится как к C #, так и к Java.

7 голосов
/ 10 января 2009

Стоит отметить, что если у вас есть несколько членов одного типа, вы можете объявить их как:

protected float bla1, bla2, bla3;
1 голос
/ 10 января 2009

Нет, нет эквивалента в C # (VB и F # также).

Лично я люблю эту разницу. Я работаю в очень большой кодовой базе C ++, и нет никакого способа взглянуть на конкретный метод и узнать его особую доступность. Некоторые классы стали настолько большими, что для просмотра модификатора требуется значительное количество прокрутки страниц.

Некоторые кодеры могут подумать, что это не так уж плохо, но учитывают, что происходит, когда люди начинают смешивать в #if defs в середине класса и добавлять модификаторы в эти # if. Это делает определение модификатора доступа во время просмотра кода нетривиальной операцией.

Это небольшая жертва при наборе текста для добавления встроенного модификатора, но оно того стоит с точки зрения долгосрочной читабельности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...