2011-02-05 2 views

ответ

5

Нет, нет. Вы не можете иметь частный класс, если он не вложен.

2

В каком сценарии для другого класса вы бы хотели иметь «частный» класс?

Модификатор internal можно использовать для создания класса, который отображается только в текущей сборке.

// the class below is only visible inside the assembly in where it was declared 
internal class MyClass 
{ 
} 
2

No. Что бы масштабы такого класса быть?

+3

Я бы предположил, что OP более опытен в Java, что позволило бы видеть видимость в том же исходном файле. –

30

Просто НИКАКИЕ. Ничего, если его во вложенном классе

  • Классы и структуры, которые не вложены в других классах или структуры могут быть либо общественных или внутреннего. Тип, объявленный как открытый, доступен любым другим типом. Тип, объявленный как внутренний, доступен только для типов внутри одной и той же сборки. Классы и структуры объявляются как по умолчанию, если ключевое слово public не добавлено в определение класса.

  • Определения класса или структуры могут добавлять внутреннее ключевое слово, чтобы сделать их уровень доступа явным. Модификаторы доступа не влияют на сам класс или структуру - он всегда имеет доступ к самому себе и ко всем своим членам.

  • Элементы структуры, включая вложенные классы и структуры, могут быть объявлены как общедоступные, внутренние или частные. Члены класса, включая вложенные классы и структуры, могут быть общедоступными, защищенными внутренними, защищенными, внутренними или частными. Уровень доступа для членов класса и членов структуры, включая вложенные классы и структуры, по умолчанию является закрытым. Частные вложенные типы недоступны извне содержащего типа.

  • Производные классы не могут иметь большую доступность, чем их базовые типы. Другими словами, у вас не может быть открытого класса B, который происходит от внутреннего класса A. Если это было разрешено, это привело бы к тому, что A публично, потому что все защищенные или внутренние члены A доступны из производного класса.


    Вы можете включить определенные другие сборки для доступа к вашим внутренним типам с помощью InternalsVisibleToAttribute.

0

Я нашел информацию в C# Default access modifier of Main() method также быть полезным в связи с этим вопросом запрограммировав на других языках. В приведенном ниже примере MyClass будет внутренним, а static void main будет закрытым. По мере того, как Питер Талыор намекал на другие языки, я думаю, что это явно видно. Visual Studio в зависимости от проекта создает исходный файл cs программы, который похож на ниже; представление класса на вкладке «Вид» в Visual Studio, как указано в статье связанного стека, может быть полезно при проверке модификаторов доступа.

namespace MyNamespace{ 
    class MyClass{ 
     static void Main(string[] args){ 
     } 
    } 
} 
1

Мы можем объявить класс приватным внутри другого класса.любезно найти код ниже о том, как добиться того же:

public class Class1 
    { 
    temp _temp ; 
    public Class1() 
    { 
     _temp = new temp(); 
    }  

    public void SetTempClass(string p_str, int p_Int) 
    { 
     _temp.setVar(p_str, p_Int); 
    } 

    public string GetTempClassStr() 
    { 
     return _temp.GetStr(); 
    } 

    public int GetTempClassInt() 
    { 
     return _temp.GetInt(); 
    } 

    private class temp 
    { 
     string str; 
     int i; 

     public void setVar(string p_str, int p_int) 
     { 
     str = p_str; 
     i = p_int; 
     } 

     public string GetStr() 
     { 
     return str; 
     } 

     public int GetInt() 
     { 
     return i; 
     } 
    } 
    } 
Смежные вопросы