2010-02-08 4 views
11

В Java имя файла должно быть именем открытого класса, определенным в этом java-файле. Имеет ли C# аналогичное требование? я могу получить файл A.cs, который определяет только открытый класс B внутри? спасибо,C# .cs имя файла и имя класса должны быть сопоставлены?

+1

Да, и вы были бы удивлены, сколько проектов C# все еще имеют автоматически созданный файл Class1.cs, хотя имя класса было изменено ... –

+2

@Adam, Michael означал «нет» для «Имеет ли C# аналогичное требование ?» но (правильно) «да» на «может ли я иметь файл A.cs, который определяет только открытый класс B внутри?» – Kevin

+0

@Adam Я думаю, что он просто отвечал на второй вопрос в тексте, а не первый :) –

ответ

16

Нет, подобного требования нет.

Да, вы можете это сделать.

Однако считается плохой практикой.

Microsoft StyleCop предупредит вас, если вы это сделаете, но все будет хорошо компилироваться.

20

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

Лучшая практика состоит в том, чтобы определить один класс для каждого файла и дать файлу то же имя, что и определение класса (или структуры и т. Д.).

1

Нет, на C# вам не нужно называть свой класс таким же, как ваш файл.

Вдоль аналогичной линии вы можете иметь несколько классов public в файле. Java позволяет вам только один.

Это может быть полезно для определения нескольких общедоступных перечислений в одном файле. Несколько небольших классов.

Плохая практика, однако, слишком много бросить в один файл.

1

Возможно, имеется файл A.cs, который содержит общедоступный класс B, но считается плохой практикой.