嵌套類型:一個類完整的包含在了另一個類
包含類型:在另一個對象中做數據成員的對象
類包含:計算機類中定義一個編程類型的私有成員(而這個編程類型則是另 一個全新的類),計算機類(以及所有計算機類的實例成員)包含了編程類。假 設計算機類的一個成員定義一個編程類型的一個數據成員時,不能認為是計算機 類包含編程類,而是計算機類的一個對象包含編程類的一個對象。
嵌套類型:可訪問被包含類型的私有成員和受保護類型(包括繼承的私有成 員或受保護成員)。
類的包含類型:就是在另一個對象中做數據成員的對象類型
public class aaa //創建一個類,下面類中我們會創建一個他這個類型的私有變量
{
private string val1; //創建一個私有變量
public aaa(string str) //定制一個構造函數
{
val1=str; //為他賦上傳進來的值
}
public string Val1
{
get
{ return val1; }
set
{ val1=value; }
}
}
public class bbb //這個類將會使用上面類創建一個私有變量
{
private aaa bval1; //注意,我們定制了一個類型為aaa的私有變量
public bbb()
{
}
public aaa Bval1 //屬性,返回的類型是aaa
{
get
{ return bval1; }
set
{ bval1=value; }
}
}
protected void Page_Load(object sender, EventArgs e)
{
bbb bb=new bbb(); //我們利用第二個類創建了一個實例
bb.Bval1=new aaa("abc123"); //這裡有點怪,其實也不怪
Response.Write(bb.Bval1.Val1); //通過bb.Bval1.Val1的方式訪問被包含類的屬性
}
結果:
abc123
在類或結構內部定義的類型稱為嵌套類型。例如:
class Container
{
class Nested
{
Nested() { }
}
}
不管外部類型是類還是結構,嵌套類型均默認為 private,但是可以設置為 public、protected internal、protected、internal 或 private。在上面的示 例中,Nested 對外部類型是不可訪問的,但可以設置為 public,如下所示:
class Container
{
public class Nested
{
Nested() { }
}
}
嵌套類型(或內部類型)可訪問包含類型(或外部類型)。若要訪問包含類 型,請將其作為構造函數傳遞給嵌套類型。例如:
public class Container
{
public class Nested
{
private Container m_parent;
public Nested()
{
}
public Nested(Container parent)
{
m_parent = parent;
}
}
}
嵌套類型可訪問包含類型的私有成員和受保護的成員(包括所有繼承的私有 成員或受保護的成員)。
在前面的聲明中,類 Nested 的完整名稱為 Container.Nested。這是用來創 建嵌套類的新實例的名稱,如下所示:
Container.Nested nest=new Container.Nested();