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

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

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

Formクラス等の型確認方法

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

■95017 / inTopicNo.1)  Formクラス等の型確認方法
  
□投稿者/ 棚橋 (1回)-(2020/06/13(Sat) 12:35:32)

分類:[VB.NET/VB2005 以降] 

(VB2019使用)
デザイナでForm1、Form2というフォームクラスを用意したとします。
ある変数f(Nothingではない)について、

・fがFormであるかどうか(Form1もForm2もTrue)
・fがForm1であるかどうか(Form2はFalse)

を判定するにはどうすればよいのでしょうか?

また、Ixxxというインターフェースを実装したクラスcls1とcls2があるとします。
ある変数x(Nothingではない)について、

・xがIxxxを実装しているかどうか(cls1もcls2もTrue)
・xがcls1であるかどうか(cls2はFalse)

の判定方法も同じでしょうか?
引用返信 編集キー/
■95018 / inTopicNo.2)  Re[1]: Formクラス等の型確認方法
□投稿者/ Hongliang (1051回)-(2020/06/13(Sat) 12:44:59)
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/typeof-operator
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/trycast-operator
TypeOf演算子またはTryCast演算子を使えます。

TypeOf演算子はちょうどご質問の通りの挙動です。
TypeOf f Is FormならForm1でもTrueですし、インターフェイスにも適用できます宇。

TryCastは、キャストできるならキャストし、できないならNothingを返す演算子です(なので値型には使用できません)。
TryCast(f, Form)ならForm型を返し、TryCast(f, Form2)ならNothingを返します。
引用返信 編集キー/
■95020 / inTopicNo.3)  Re[1]: Formクラス等の型確認方法
□投稿者/ 棚橋 (2回)-(2020/06/13(Sat) 13:17:43)
ありがとうございました。
TypeOfを使用した、以下の式でうまくいきました。

> ・fがFormであるかどうか(Form1もForm2もTrue)

If TypeOf f Is Form Then

> ・fがForm1であるかどうか(Form2はFalse)

If TypeOf f Is Form1 Then

> ・xがIxxxを実装しているかどうか(cls1もcls2もTrue)

If TypeOf x Is Ixxx Then

> ・xがcls1であるかどうか(cls2はFalse)

If TypeOf x Is cls1 Then

また、TryCastの使い方も分かりました。ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ