程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 嵌套類型/包含類型

嵌套類型/包含類型

編輯:關於.NET

嵌套類型:一個類完整的包含在了另一個類

包含類型:在另一個對象中做數據成員的對象

類包含:計算機類中定義一個編程類型的私有成員(而這個編程類型則是另 一個全新的類),計算機類(以及所有計算機類的實例成員)包含了編程類。假 設計算機類的一個成員定義一個編程類型的一個數據成員時,不能認為是計算機 類包含編程類,而是計算機類的一個對象包含編程類的一個對象。

嵌套類型:可訪問被包含類型的私有成員和受保護類型(包括繼承的私有成 員或受保護成員)。

類的包含類型:就是在另一個對象中做數據成員的對象類型

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();

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved