IEnumerable<T>
,IComparable<T>
などがあります。 IList<T>
、ICollection<T>
など多くはありません。どうして?.NET Framework 4.0の型の差異
6
A
答えて
11
安全共/ contra-varianceを紹介します。 IEnumerable<T>
のみ出力位置におけるT
とIComparable<T>
のみ入力位置でT
を有するを有しているIList<T>
とICollection<T>
は、入力及び出力位置にT
の両方を有します。
はIList<T>
サポートされているタイプの分散を仮定します
static void FailingMethod(IList<object> list) {
list[0] = 5;
}
static void Test() {
var a = new List<string>();
a[0] = "hello";
FailingMethod(a); // if it was variant, this method call would be unsafe
}
1
アンダースHejlsebergは、「C#3の未来を。」簡潔がありますが、彼の話にコ/ contravarianceを説明し議論を照らします共分散とコントラバリアンスに関する彼の議論は、プレゼンテーションに50分17秒で始まります。
2
も参照してください:What C# 4.0 covariance doesn't do
関連する問題
- 1. GacUtil + .NET Framework 4.0
- 2. AzCopy - .NET Framework 4.0
- 3. .net framework 4.0 documentation
- 4. .NET Framework 3.0アプリケーション(Windows XP SP3、.NET Framework 4.0)
- 5. .Net Framework 4.0のVisual Basic 6.0
- 6. んの.NET Framework 4.0は、DB2
- 7. .NET 4.0 Frameworkのアップグレード要件
- 8. Linq2SQLと.NET Framework 4.0のEF
- 9. wpf/net framework 4.0/charts and diagrams
- 10. Compact Framework 2.0と.Net Framework 4.0との互換性
- 11. Visual Studio 2008および.NET Framework 4.0
- 12. NancyFX自己ホスト+ SignalR + .Net Framework 4.0
- 13. パワービルダーC#で同等のOLEObject型(.Net 4.0)
- 14. .NET SignalRクライアント(Windows XP/.NET Framework 4.0)をsignalR v2サーバーに接続
- 15. .Netインストーラ - .exeと.msiの差異
- 16. .NET 4.0のMembershipProvider
- 17. .NET 4.0のスライダコントロール
- 18. .NET 4.0のParallel.ForEach
- 19. .Net Framework 4.7とコンポーネントの異なるバージョン
- 20. .net 4.0から4.5へのアップグレードckeditor .net
- 21. .NET Framework 4.0のコードでEntity Frameworkにテーブル名を与える方法
- 22. IIS 7.0の.NET 4.0プロジェクト
- 23. .net framework 4.0をサポートするMolesのバージョンはありますか?
- 24. .NET Framework 4.0 Monoでのターゲット設定とコンパイル
- 25. .NET 4.0 Entity Frameworkのタイムアウトが終了しました
- 26. は、Microsoft .NET Framework 4.0ジャンプリスト/ TaskbarItemInfoの例では、それは
- 27. ケセラ、セラ! SQL 2008のNet Framework 4.0サポートですか?
- 28. Entity Framework 4.0セルフトラッキングロードナビゲーションプロパティ
- 29. Microsoft Fakes and .Net 4.0
- 30. .NET 4.0とWindows 7のPerformanceCounters
感謝を!インデクサーを使用しているように見えるので、どのクラスも非バリアントになります。 しかしICollection <>は入力パラメータにTしかありません。 – UserControl
いいえ、一般的なインデクサーとは関係ありません。他のメソッドやプロパティと同様に、インデクサのパラメータと戻り値の型(およびget/setアクセサの存在)によって異なります。あなたは次のようなインデクサーを持つかもしれません:T this [int index] {get {return x [index]; }}}そして、アクセサーが設定されていなければ、それは変種かもしれません。 –