第10章 屬性[《.net框架程序設(shè)計(jì)》讀書筆記]
發(fā)表時(shí)間:2024-02-20 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]第十章 屬性摘要:本章討論C#中的 屬性 及 索引器一、屬性 分為靜態(tài)屬性、實(shí)例屬性和虛屬性l 避免直接訪問類型字段或使用煩瑣的訪問器方法進(jìn)行訪問l 很好的實(shí)現(xiàn)了類型的數(shù)據(jù)封裝,如:改變字段而維持屬性的意義對用戶是透明的l 代碼量小,運(yùn)...
第十章 屬性
摘要:
本章討論C#中的 屬性 及 索引器
一、屬性
分為靜態(tài)屬性、實(shí)例屬性和虛屬性
l 避免直接訪問類型字段或使用煩瑣的訪問器方法進(jìn)行訪問
l 很好的實(shí)現(xiàn)了類型的數(shù)據(jù)封裝,如:改變字段而維持屬性的意義對用戶是透明的
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)索引器”
注:在屬性或索引器中添加對參數(shù)或value值得判定有助于保證程序的完整性
一個(gè)簡單的示例:
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