C#索引器和屬性
索引器
索引器允許類或結構的例項按照與陣列相同的方式進行索引。索引器類似於屬性,不同之處在於它們的訪問器採用引數。
在下面的示例中,定義了一個泛型類,併為其提供了簡單的 get 和 set 訪問器方法(作為分配和檢索值的方法)。Program 類為儲存字串建立了此類的一個例項。
1class SampleCollection
2{
3 private T[] arr = new T[100];
4 public T this[int i]
5 {
6 get
7 {
8 return arr[i];
9 }
10 set
11 {
12 arr[i] = value;
13 }
14 }
15}
16
17// This class shows how client code uses the indexer
18class Program
19{
20 static void Main(string[] args)
21 {
22 SampleCollection
23 stringCollection[0] = "Hello, World";
24 System.Console.WriteLine(stringCollection[0]);
25 }
26}
27
索引器概述
索引器使得物件可按照與陣列相似的方法進行索引。
get 訪問器返回值。set 訪問器分配值。
this 關鍵字用於定義索引器。
value 關鍵字用於定義由 set 索引器分配的值。
索引器不必根據整數值進行索引,由您決定如何定義特定的查詢機制。
索引器可被過載。
索引器可以有多個形參,例如當訪問二維陣列時。
屬性
屬性是這樣的成員:它們提供靈活的機制來讀取、編寫或計算私有欄位的值。可以像使用公共資料成員一樣使用屬性,但實際上它們是稱為“訪問器”的特殊方法。這使得資料在可被輕鬆訪問的同時,仍能提供方法的安全性和靈活性。
在本示例中,類 TimePeriod 儲存了一個時間段。類內部以秒為單位儲存時間,但提供一個稱為 Hours 的屬性,它允許客戶端指定以小時為單位的時間。Hours 屬性的訪問器執行小時和秒之間的轉換。
示例:
class TimePeriod
{
private double seconds;
public double Hours
{
get { return seconds / 3600; }
set { seconds = value * 3600; }
}
}
class Program
{
static void Main()
{
TimePeriod t = new TimePeriod();
// Assigning the Hours property causes the 'set' accessor to be called.
t.Hours = 24;
// Evaluating the Hours property causes the 'get' accessor to be called.
System.Console.WriteLine("Time in hours: " + t.Hours);
}
}
輸出
Time in hours: 24
屬性概述
屬性使類能夠以一種公開的方法獲取和設定值,同時隱藏實現或驗證程式碼。
get 屬性訪問器用於返回屬性值,而 set 訪問器用於分配新值。這些訪問器可以有不同的訪問級別。有關更多資訊,請參見訪問器可訪問性。
value 關鍵字用於定義由 set 索引器分配的值。
不實現 set 方法的屬性是隻讀的。
索引器和屬性之間的比較
屬性
索引器
允許呼叫方法,如同它們是公共資料成員。
允許呼叫物件上的方法,如同物件是一個陣列。
可通過簡單的名稱進行訪問。
可通過索引器進行訪問。
可以為靜態成員或例項成員。
必須為例項成員。
屬性的 get 訪問器沒有引數。
索引器的 get 訪問器具有與索引器相同的形參表。
屬性的 set 訪問器包含隱式 value 引數。
除了 value 引數外,索引器的 set 訪問器還具有與索引器相同的形參表。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-548716/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#學習筆記-欄位、屬性、索引器C#筆記索引
- C#屬性和lamdaC#
- c#屬性訪問器C#
- c# tcbs屬性訪問器C#
- C#反射設定屬性值和獲取屬性值C#反射
- SQL Server 生成C#公共實體屬性和私有屬性SQLServerC#
- C#中類的屬性訪問器--get和set分析C#
- c# hasvalue屬性C#
- [引]C# DllImport 屬性C#Import
- C#裡面標籤的屬性和事件C#事件
- defer 屬性和 async 屬性
- EF Core 索引器屬性(Indexer property)場景及應用索引Index
- C#中屬性的解析C#
- C#屬性與欄位C#
- 瞭解下C# 屬性(Property)C#
- c#屬性之繼承C#繼承
- C#中的屬性和欄位的區別C#
- .Net(C#)關於變數的命名和屬性C#變數
- c# 索引指示器C#索引
- Vue計算屬性和偵聽器Vue
- JavaScript私有屬性和靜態屬性JavaScript
- C# WebBrowser的8個方法、13個屬性和事件C#Web事件
- Oracle全域性索引和本地索引Oracle索引
- C# 類相同屬性賦值C#賦值
- C#中有關屬性的演示C#
- c# form窗體modifiers屬性C#ORM
- C#基礎概念之密封類,屬性訪問器,介面C#
- Vue中計算屬性和偵聽器Vue
- python 魔法方法,屬性和迭代器Python
- 庫和屬性
- 屬性和方法
- 瞭解下C# 索引器(Indexer)C#索引Index
- C# 實現自己索引器C#索引
- C#中索引器的操作C#索引
- swift 屬性觀察器Swift
- MySQL字首索引和索引選擇性MySql索引
- c# winform窗體相關屬性C#ORM
- c#之事件_方法_屬性_欄位C#事件