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. .net framework 4.0 documentation
- 2. GacUtil + .NET Framework 4.0
- 3. .NET Framework 3.0アプリケーション(Windows XP SP3、.NET Framework 4.0)
- 4. んの.NET Framework 4.0は、DB2
- 5. .Net Framework 4.0のVisual Basic 6.0
- 6. .NET 4.0 Frameworkのアップグレード要件
- 7. Linq2SQLと.NET Framework 4.0のEF
- 8. wpf/net framework 4.0/charts and diagrams
- 9. パワービルダーC#で同等のOLEObject型(.Net 4.0)
- 10. Compact Framework 2.0と.Net Framework 4.0との互換性
- 11. Visual Studio 2008および.NET Framework 4.0
- 12. .Netインストーラ - .exeと.msiの差異
- 13. .NET 4.0のParallel.ForEach
- 14. .NET 4.0のMembershipProvider
- 15. .NET 4.0のスライダコントロール
- 16. は、Microsoft .NET Framework 4.0ジャンプリスト/ TaskbarItemInfoの例では、それは
- 17. .net framework 4.0をサポートするMolesのバージョンはありますか?
- 18. .NET Framework 4.0 Monoでのターゲット設定とコンパイル
- 19. .NET 4.0 Entity Frameworkのタイムアウトが終了しました
- 20. ケセラ、セラ! SQL 2008のNet Framework 4.0サポートですか?
- 21. .net 4.0から4.5へのアップグレードckeditor .net
- 22. IIS 7.0の.NET 4.0プロジェクト
- 23. Entity Framework 4.0セルフトラッキングロードナビゲーションプロパティ
- 24. Entity Framework 5.0 - 最小限の.NET Frameworkバージョンが必要ですか? .Net 4.0または4.5?
- 25. Microsoft Fakes and .Net 4.0
- 26. .NET 4.0とWindows 7のPerformanceCounters
- 27. iPhoneのMonoTouch - .NET 4.0
- 28. .net 4.0のERPソリューション
- 29. .net 4.0内のweb.config
- 30. は、.NET 4.0では4.0
感謝を!インデクサーを使用しているように見えるので、どのクラスも非バリアントになります。 しかしICollection <>は入力パラメータにTしかありません。 – UserControl
いいえ、一般的なインデクサーとは関係ありません。他のメソッドやプロパティと同様に、インデクサのパラメータと戻り値の型(およびget/setアクセサの存在)によって異なります。あなたは次のようなインデクサーを持つかもしれません:T this [int index] {get {return x [index]; }}}そして、アクセサーが設定されていなければ、それは変種かもしれません。 –