明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

第10章 屬性[《.net框架程序設(shè)計(jì)》讀書筆記]

[摘要]第十章 屬性摘要:本章討論C#中的 屬性 及 索引器一、屬性 分為靜態(tài)屬性、實(shí)例屬性和虛屬性l 避免直接訪問類型字段或使用煩瑣的訪問器方法進(jìn)行訪問l 很好的實(shí)現(xiàn)了類型的數(shù)據(jù)封裝,如:改變字段而維持屬性的意義對(duì)用戶是透明的l 代碼量小,運(yùn)...
第十章 屬性

摘要:

本章討論C#中的 屬性 及 索引器

一、屬性

分為靜態(tài)屬性、實(shí)例屬性和虛屬性

l 避免直接訪問類型字段或使用煩瑣的訪問器方法進(jìn)行訪問

l 很好的實(shí)現(xiàn)了類型的數(shù)據(jù)封裝,如:改變字段而維持屬性的意義對(duì)用戶是透明的

l 代碼量小,運(yùn)算量小的操作才使用屬性,否則使用方法調(diào)用更合適



二、索引器

l 可有多個(gè)重載的索引器,只要參數(shù)列表不同即可

l 可通過應(yīng)用System.Runtime.CompilerServices.IndexerNameAttribute特性改變編譯器為索引器生成的方法名(缺省使用get_Item(…),set_Item(...))

l 不能通過上述改變方法名的辦法來定義多個(gè)參數(shù)列相同而僅名稱不同的索引器

l 沒有所謂“靜態(tài)索引器”



注:在屬性或索引器中添加對(duì)參數(shù)或value值得判定有助于保證程序的完整性



一個(gè)簡(jiǎn)單的示例:

using System;

class IndexerTest

{

private static string[] strArr = new string[5];



IndexerTest()

{

for(int i = 0; i < 5; i ++)

{

strArr[i] = i.ToString();

}

}



public string this[Int32 nIndex]

{

get{

return strArr[nIndex];

}



set{

strArr[nIndex] = value;

}

}



//提供不同的參數(shù)列進(jìn)行重載索引器

public string this[byte bIndex]

{

get{

return strArr[bIndex];

}



set{

strArr[bIndex] = (string)value;

}

}



//只讀屬性

public string[] StrArr

{

get{

return strArr;

}

}



public static void Main()

{

IndexerTest it = new IndexerTest();



it[1] = "Hello"; //利用索引器進(jìn)行寫操作

foreach(string str in it.StrArr)

{

Console.WriteLine(str);

}

}

}

/*

運(yùn)行結(jié)果:

0

Hello

2

3

4