簡體   English   中英

什么是CLR / C#中的“默認索引屬性”?

[英]What is “default indexed property” in CLR/C#?

我正在閱讀《框架設計指南》這本書,但對其中一個規則(第142頁)“請勿使用非默認索引屬性”感到困惑。

出於多種原因,我感到困惑-索引屬性不應表示索引器,但是如果它是關於一個屬性的,則默認屬性(自動一個)是什么,如果這是一個錯字(“ indexe R property”),並且它是關於索引器,我發現了一些提示,也許只有一個int參數的索引器被稱為默認索引器(是嗎?),但是在這種情況下,C#不會禁止其他索引器。

我無法破譯。

在某些語言(例如Delphi )中,您可以定義命名的索引屬性(例如)

  type 
    TMyCollection = class(TObject)
    private
      ...
    protected 
      function GetItem(idx: LongInt): LongWord; virtual;
    public
      // Named ("Items") indexed (note "idx") property 
      property Items[idx: LongInt]: LongWord read GetItem; 
    end;

CLR 支持此構造

https://msdn.microsoft.com/en-us/library/vstudio/ms229061(v=vs.100).aspx

但是,不建議使用這種構造,並且某些語言(例如C#強制執行此准則。 我們在C#中所允許的全部是無名默認 )索引屬性-indexer。

C# 索引器始終是默認的索引屬性 無法在C#中創建非默認索引屬性。 在Visual Basic中,完全可以創建使用索引的非默認屬性

由於C#程序無法利用非默認索引屬性, 因此框架設計指南建議不要創建它們-C#和VB代碼可以互操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM