Подчеркивать или не подчеркивать, вот в чем вопрос - PullRequest
119 голосов
/ 16 января 2009

Есть ли проблемы с отсутствием префикса частных полей с подчеркиванием в C #, если двоичная версия будет использоваться другими языками фреймворка? Например, поскольку C # чувствителен к регистру, вы можете вызвать поле "foo" и открытое свойство "Foo", и оно отлично работает.

Будет ли это любым эффектом для языка без учета регистра, такого как VB.NET, возникнут ли какие-либо проблемы с CLS-совместимостью (или другие), если имена различаются только регистром?

Ответы [ 13 ]

1 голос
/ 16 января 2009

Если вы хотите, чтобы ваша сборка была совместимой с CLS, вы можете использовать атрибут CLSCompliant в вашем файле assemblyinfo. Затем компилятор будет жаловаться, когда ваш код содержит материал, не совместимый с cls.

Тогда, когда у вас есть 2 свойства, которые отличаются только регистром, компилятор выдаст ошибку. С другой стороны, если у вас есть приватное поле и публичное свойство в одном классе, проблем не будет.

(Но я также всегда префикс своих личных членов подчеркиванием. Это также помогает мне понять, когда я читаю свой код, что определенная переменная является полем члена).

0 голосов
/ 12 июля 2013

Нет никаких последствий вообще. Когда ваш код компилируется, все, что важно для компилятора, это пространство имен поля / свойства и видимость. Подчеркивание так же важно, как и любой другой символ, при именовании идентификатора. Настоящая хитрость заключается в использовании соглашения, которое вы и окружающие вас люди поймете.

0 голосов
/ 16 января 2009

Мне нравится использовать подчеркивание перед моими личными полями по двум причинам. Один уже упоминался, поля выделяются из связанных свойств в коде и в Intellisense. Вторая причина заключается в том, что я могу использовать одни и те же соглашения об именах, независимо от того, пишу ли я в VB или C #.

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