偶然在C#中看到内部类,即在类的内部定义类,
例如:System.Windows.Forms.Control类中又有ControlCollection,ControlAccessibleObject类的定义,
内部类的定义是为了供给该类自身使用,外部类无法进行使用,作用是:使内部类的可见性更小
可参考如下实例:
namespace DesignPattern.InnerClass
{
/// <summary>
/// 外部类
/// </summary>
public class OuterClass
{
/// <summary>
/// 类名
/// </summary>
public string Name { get; set; }
public string InnerClassName
{
get
{
InnerClass inner = new InnerClass();
return inner.Name;
}
}
public OuterClass.InnerClass myInnerClass
{
get;
set;
}
/// <summary>
/// 内部类(其访问修饰符决定其对外的可见性)
/// </summary>
public class InnerClass
{
/// <summary>
/// 类名
/// </summary>
public string Name
{
get
{
return "My Name is InnerClass";
}
}
}
}
/// <summary>
/// 内部类
/// </summary>
public class InnerClass
{
/// <summary>
/// 类名
/// </summary>
public string Name
{
get
{
return "My Name is InnerClass";
}
}
/// <summary>
/// 时间
/// </summary>
public string Date
{
get
{
return "2013-1-1";
}
}
}
public class Test
{
public void TestMethod()
{
OuterClass outClass = new OuterClass();
string result = outClass.InnerClassName;
//1.内部类只能通过(外部类.内部类)的方式使用,
//2.另外内部类如果不声明为public时,则外部程序无法使用它
OuterClass.InnerClass inner = new OuterClass.InnerClass();
string name = inner.Name;
//非内部类测试,在编译时两者(InnerClass与OutClass.InnerClass)不相冲突
InnerClass inner2 = new InnerClass();
string name2 = inner2.Name;
string date = inner2.Date;
//总之,内部类是主要是为了提供给其外部类自身使用,
//使内部类的可见性更小一些,提高封装性
}
}
}