C#中私有类的概念
Posted
技术标签:
【中文标题】C#中私有类的概念【英文标题】:Concept of Private class in C# 【发布时间】:2011-06-21 20:23:12 【问题描述】:除了内部类之外,C# 中是否可以存在私有类?
【问题讨论】:
【参考方案1】:没有。除非它在嵌套类中,否则什么都没有
未嵌套在其他类或结构中的类和结构可以是 public 或 internal。任何其他类型都可以访问声明为 public 的类型。声明为 internal 的类型只能由同一程序集中的类型访问。类和结构默认声明为internal,除非在类定义中添加关键字public。
类或结构定义可以添加 internal 关键字以明确其访问级别。访问修饰符不会影响类或结构本身——它始终可以访问自身及其所有成员。
结构成员(包括嵌套类和结构)可以声明为公共、内部或私有。类成员,包括嵌套类和结构,可以是公共的、受保护的内部的、受保护的、内部的或私有的。默认情况下,类成员和结构成员(包括嵌套类和结构)的访问级别是私有的。无法从包含类型外部访问私有嵌套类型。
派生类的可访问性不能高于其基类。换句话说,您不能拥有从内部类 A 派生的公共类 B。如果允许这样做,则会产生使 A 成为公共的效果,因为 A 的所有受保护或内部成员都可以从派生类访问。
您可以使用InternalsVisibleToAttribute 启用特定的其他程序集来访问您的内部类型。
【讨论】:
【参考方案2】:不,没有。除非是嵌套的,否则不能拥有私有类。
【讨论】:
【参考方案3】:除了实习生课程之外,您还希望在什么情况下开设“私人”课程?
您可以使用internal
修饰符创建一个仅在当前程序集中可见的类。
// the class below is only visible inside the assembly in where it was declared
internal class MyClass
【讨论】:
【参考方案4】:没有。 这样一个类的范围是什么?
【讨论】:
我猜 OP 在 Java 方面更有经验,这将允许在同一个源文件中可见。【参考方案5】:我们可以在其他类中将一个类声明为 Private。请在下面找到如何实现相同的代码:
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;
【讨论】:
从这里复制的答案 - social.msdn.microsoft.com/Forums/en-US/…以上是关于C#中私有类的概念的主要内容,如果未能解决你的问题,请参考以下文章