C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: C#3.0のList<T>について


(過去ログ 97 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■57891 / inTopicNo.1)  C#3.0のList<T>について
  
□投稿者/ buk (1回)-(2011/03/21(Mon) 01:01:08)

分類:[C#] 

こんにちは。皆様はじめまして。
現在オライリーのC#クックブック第3版を勉強しています。
そのなかで(レシピ2.4)
List<int> numbers = new List<int>();
プロパティによってはIListにキャストしないと呼び出せないものがあるとかいてあり、
実際コーディングしたところそうでした。

(以下実例) ○ ((IList)numbers).IsReadOnly
×  numbers.IsReadOnly

そこで気になって、Listの定義を見たところ、確かにIsReadOnlyプロパティは宣言されていませんでした。
しかし、List<T>はIListインターフェイス継承しているため、
IListでプロパティとして宣言されたIsReadOnlyは実装されていないといけないのではないでしょうか?

実際自分でインターフェイスの継承を試してみたところ、プロパティを実装しないエラーとなりコンパイル通りません。
どうしてこのようなことがおこるのか不思議です。

よろしければどなたかご教授いただければと思います。
長文失礼しました。








引用返信 編集キー/
■57892 / inTopicNo.2)  Re[1]: C#3.0のList<T>について
□投稿者/ 囚人 (592回)-(2011/03/21(Mon) 01:14:43)
明示的なインターフェースの実装です。
http://msdn.microsoft.com/ja-jp/library/ms173157(VS.80).aspx

まあそうする目的はいくつかあるんですが、List<T>のIsReadOnlyのようにメンバーを一見隠せます。
隠してる理由は、List<T>のIsReadOnlyは常にfalseで意味ないからかな?

引用返信 編集キー/
■57920 / inTopicNo.3)  Re[2]: C#3.0のList<T>について
□投稿者/ buk (2回)-(2011/03/22(Tue) 14:29:53)
No57892 (囚人 さん) に返信
> 明示的なインターフェースの実装です。

明確なお答えありがとうございます。
なるほど、まだ詳しくはわかっていませんが
<明示的なインターフェースの実装>だとわかったため大変すっきりしました。
もう少し調べてみます。

やっぱり継承のルール自体は守られているんですね。当然ですが。。それがわかって安心しました。
まだまだ勉強不足ですが、お力になっていただきありがとうございました!


引用返信 編集キー/
■57939 / inTopicNo.4)  Re[3]: C#3.0のList<T>について
□投稿者/ buk (3回)-(2011/03/22(Tue) 16:15:14)
解決済みにします。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -