簡體   English   中英

文檔中通用參數的約束在哪里?

[英]Where are constraints on generic parameters in documentation?

一些泛型類對其泛型參數有限制。 例如,字典中的鍵應該使用where ...子句實現一些接口(以進行比較...)。 我在哪里可以在https://docs.microsoft.com的文檔中找到這些約束?

比如我看到了字典所有接口的信息,但是沒有看到TKey類型參數的約束信息。

為什么你認為鍵應該實現一個接口來進行比較?

Dictionary<TKey, TValue>的文檔在任何地方都沒有說。 事實上,它清楚地說明了當 TKey 沒有實現 IEquatable 接口時會發生什么(重點是我的):

字典需要一個相等實現來確定鍵是否相等。
可以使用接受比較器參數的構造函數指定IEqualityComparer<T>泛型接口的實現;
如果未指定實現,則使用默認的通用相等比較器EqualityComparer<T>.Default
如果類型TKey實現System.IEquatable<T>泛型接口,則默認相等比較器使用該實現。

事實是,.Net 框架中任何類型的實例都可以與相同類型的其他實例進行比較,無論它是否實現System.IEquatable<T>System.IComparable<T>接口。 它只是由默認的 comparer 進行比較

Dictionary 的TKey參數沒有任何約束,Zohar 已經講了很多。

.Net Framework 中的大多數泛型參數都沒有約束,如果泛型參數有任何約束,那么您可以在其定義中看到where子句,例如: https : //docs.microsoft.com/en-us/dotnet/api/system .io.unmanagedmemoryaccessor.read?view=network-4.7.2

暫無
暫無

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

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