- ふらっと C#,C♯,C#(初心者用) Part144
560 :デフォルトの名無しさん (ワッチョイ c294-OrRa)[sage]:2019/09/09(月) 13:42:14.17 ID:mFi2C/Ml0 - クラスの継承について分からくなってしまったので教えて下さい。
以下のプログラムを実行すると、コメントの通り、False, True と表示されます。 [STAThread] static void Main(string[] args) { var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); var folderItems = new Shell32.Shell().NameSpace(desktopPath).Items(); Console.WriteLine(folderItems is Shell32.FolderItems2); // False と表示される Console.WriteLine(folderItems is Shell32.FolderItems3); // True と表示される } Shell32.FolderItems3 は Shell32.FolderItems2 を継承しているので 2つ目が True なら必ず1つ目も True になると思っていたのですが、 これはどのようなことが起こっているのでしょうか。 FolderItems2 object https://docs.microsoft.com/ja-jp/windows/win32/shell/folderitems2-object FolderItems3 object https://docs.microsoft.com/ja-jp/windows/win32/shell/folderitems3-object .Net Framework 4.7.2 でコンパイルし、Windows 10 Pro で実行しました。 よろしくお願いいたします。
| - ふらっと C#,C♯,C#(初心者用) Part144
566 :デフォルトの名無しさん (ワッチョイ c294-OrRa)[sage]:2019/09/09(月) 14:54:29.42 ID:mFi2C/Ml0 - >>562
レスどうもありがとうございます。 申し訳ないですが、おっしゃりたいことが理解できませんでした。 >>565 レスどうもありがとうございます。 >>560 で貼り付けた URL は不適切で、 本来は以下の URL を貼り付けるべきでした。 申し訳ないです。 FolderItems2 Interface https://docs.microsoft.com/en-us/dotnet/api/shell32.folderitems2 FolderItems3 Interface https://docs.microsoft.com/en-us/dotnet/api/shell32.folderitems3 この .Net の説明を見てもやはり継承関係はあるようですし、 if (folderItems is Shell32.FolderItems3 folderItems3) { Shell32.FolderItems2 folderItems2 = folderItems3; } のようなコードもコンパイルエラーにならないので、 継承関係があることは間違いないと思います。 また何かお分かりのことがあれば教えていただけると嬉しく思います。 よろしくお願いいたします。
|
|