Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Почему не бывает приватных классов?


Автор: Rohoss 21.1.2011, 01:46
Вот такой философский вопрос  smile . Вообще то такие существуют, но только вложенные... А почему не бывает обычных классов с модификатором доступа privete? Мне кажется это было бы очень удобно, вот например такая ситуация: есть пространство имен, только с одним классом, экземпляр которого имеет смысл создавать. Остальные классы этого пространства имён, обеспечивают работу основного класса. Почему бы в таком случае им бы не установить private?

Автор: A5uKa 21.1.2011, 08:41
Потому, что namespace != class

Такова архитектура, что внутри namespace нам видно пространство имён, а логика релизуется внутри классов и это логично.

Автор: kemiisto 21.1.2011, 12:11
Бедняга. Захотелось человеку "честных", настоящих модулей. А их в .NET нет. Что-то добавлять про .NET не буду. Упёртым "за кусок хлеба" sapiens'ам что в лоб, что по лбу. Только репутации портит.

Автор: A5uKa 21.1.2011, 13:43
Цитата(kemiisto @ 21.1.2011,  12:11)
Бедняга. Захотелось человеку "честных", настоящих модулей. А их в .NET нет. Что-то добавлять про .NET не буду. Упёртым "за кусок хлеба" sapiens'ам что в лоб, что по лбу. Только репутации портит.

В F# есть  smile 

C# не предполагает написания модулей на уровне неймспейса, надо спускаться ниже как  я понимаю.

Автор: kemiisto 21.1.2011, 15:42
Цитата(A5uKa @  21.1.2011,  11:43 Найти цитируемый пост)
В F# есть

Только на синтаксическом уровне. В итоге (предположение) на уровне MSIL получим тот же результат,Ю что и написав static class на C#. 

A5uKa, не в службу а в дружбу посмотри Reflector'ом во что там оно отобразится в C#.

Добавлено через 2 минуты и 7 секунд
Вот, например, http://gpcp.codeplex.com/.

Там есть модули.
Код

MODULE Hello;
  IMPORT CPmain, Console;
BEGIN
  Console.WriteString("Hello CP World"); Console.WriteLn;
END Hello.


Reflector
Код

public sealed class Hello
{
    // Methods
    public static void .CPmain(string[] A_0)
    {
        ProgArgs.argList = A_0;
        Console.WriteString(CP_rts.strToChO("Hello CP World"));
        Console.WriteLn();
    }
}


Как-то так.

Автор: A5uKa 21.1.2011, 15:54
класс со статическими членами  smile 

Автор: kemiisto 21.1.2011, 16:03
Цитата(A5uKa @  21.1.2011,  13:54 Найти цитируемый пост)
класс со статическими членами

Ога. internal static class.

P.S. internal, static,  smile мало нагородили. Ничего к C# 5 чё-нить ещё придумают.

Автор: Rohoss 21.1.2011, 16:16
Цитата(kemiisto @  21.1.2011,  15:42 Найти цитируемый пост)
Только на синтаксическом уровне. В итоге (предположение) на уровне MSIL получим тот же результат,Ю что и написав static class на C#.

Есть значит есть, а то что на уровне MSIL это уже не наше дело. Ты ещё в результаты jit компиляции полезь  smile 

Цитата(A5uKa @  21.1.2011,  13:43 Найти цитируемый пост)
C# не предполагает написания модулей на уровне неймспейса, надо спускаться ниже как  я понимаю.

Ну да, предлагает модульность на уровне сборок, так что всё ок, вот только не пойму почему на уровне неймспейсов модульности нет. Наверное в этом есть какой-то смысл, так как реализовать это было бы не сложно... 
Хотя с другой стороны, пространство имён это всего лишь метка для класса...

Добавлено через 2 минуты и 12 секунд
Цитата(kemiisto @  21.1.2011,  15:42 Найти цитируемый пост)
Вот, например, Gardens Point Component Pascal.

хз, мне лично смотреть тошно на паскалеобразный синтаксис  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)