第10章 屬性[《.net框架程序設計》讀書筆記]
發表時間:2024-06-18 來源:明輝站整理相關軟件相關文章人氣:
[摘要]第十章 屬性摘要:本章討論C#中的 屬性 及 索引器一、屬性 分為靜態屬性、實例屬性和虛屬性l 避免直接訪問類型字段或使用煩瑣的訪問器方法進行訪問l 很好的實現了類型的數據封裝,如:改變字段而維持屬性的意義對用戶是透明的l 代碼量小,運...
第十章 屬性
摘要:
本章討論C#中的 屬性 及 索引器
一、屬性
分為靜態屬性、實例屬性和虛屬性
l 避免直接訪問類型字段或使用煩瑣的訪問器方法進行訪問
l 很好的實現了類型的數據封裝,如:改變字段而維持屬性的意義對用戶是透明的
l 代碼量小,運算量小的操作才使用屬性,否則使用方法調用更合適
二、索引器
l 可有多個重載的索引器,只要參數列表不同即可
l 可通過應用System.Runtime.CompilerServices.IndexerNameAttribute特性改變編譯器為索引器生成的方法名(缺省使用get_Item(…),set_Item(...))
l 不能通過上述改變方法名的辦法來定義多個參數列相同而僅名稱不同的索引器
l 沒有所謂“靜態索引器”
注:在屬性或索引器中添加對參數或value值得判定有助于保證程序的完整性
一個簡單的示例:
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;
}
}
//提供不同的參數列進行重載索引器
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"; //利用索引器進行寫操作
foreach(string str in it.StrArr)
{
Console.WriteLine(str);
}
}
}
/*
運行結果:
0
Hello
2
3
4