No.3ベストアンサー
- 回答日時:
aからオープンジェネリック型のTypeを取得して,それがリストであるかを比較する,というような形になります。
if (a == null)
{
// a は null
}
else
{
var type = a.GetType();
if (!type.IsGenericType)
{
// a はジェネリック型ではない == List<T>でもDictionary<TK, TV>でもない
}
else
{
var openType = type.GetGenericTypeDefinition();
if (openType == typeof(List<>))
{
// a はList<T>
}
else if (openType == typeof(Dictionary<, >))
{
// a はDictionary<TK, TV>
}
else
{
// a はその他のジェネリック型
}
}
}
ご回答ありがとうございます。
詳しく書いて頂きありがとうございます。
理想とする結果がでました。
ただすいません、自分の中でもう一つ疑問がでてきまして
例えば
if (openType == typeof(Dictionary<, >))
でDictionaryを判別したあとにDictionary<, >の「<,>」の中がどんな型であろうとも
ループ処理をさせたいのですが、
if (openType == typeof(Dictionary<,>))
{
foreach (var kvp in a as Dictionary<dynamic, dynamic>/*←これが取得できない・・・*/)
{
}
}
dynamicだと無理なようなのですが、これはどのように記述したら
列挙(ループ)可能な処理ができるようになるのでしょうか?
自分としてはDictionaryの<,>の中の型の調べ方すら分からないのですが、
もしお分かりであればアドバイス頂けないでしょうか?
No.4
- 回答日時:
.NETのジェネリックは型を保持するため,コンパイル時に型が決定している必要があります。
今回の場合,aをDictionary<dynamic, dynamic>に変換するのではなく,a自体をdynamicに変換してください。
No.3のお礼部分への例だと,
foreach (var kvp in (dynamic)a)
{
// kvp.Key / kvp.Valueを使う
}
という形になります。
コード上,全部dynamicなので,インテリセンスが使えなかったり速度の問題が出たりしますが……。
ご回答ありがとうございます。
なるほど、aそのものをdynamicに変換するんでね。
理想とする結果が得られました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) python 3.10で 同じlistに同じ構文で同じデータ代入した結果が異なる現象発生 7 2022/06/18 11:08
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
16進をASCIIコードに変換する...
-
【C++/CLI】int型からString型...
-
C#でListとDictionaryの判別方法
-
WORD型をCString型に変換する方法
-
2の補数の計算について
-
Boolean型変数の値を反転する方法
-
16進コード文字列を文字列に変換
-
VB.NETで1→A、2→B、26→Z、27→AA...
-
XMLでデータとして画像を指定す...
-
VBとアクセスでSQL文に変...
-
VBA 変数名に変数を使用したい。
-
エクセルでXY座標に並べられた...
-
『列名 '担当者CD' があいま...
-
Dir関数で読み取り順を操作でき...
-
INT64対応のprintf系関数はあり...
-
他のMDBのテーブルに追加したい
-
VB6のメモリ解放に関して
-
DataTableに特定のフィールドが...
-
C# DataTableに最後に追加した...
-
一番右のスペース以降の文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6.0の「vbFromUnicode」はVB....
-
VB.NETで1→A、2→B、26→Z、27→AA...
-
16進をASCIIコードに変換する...
-
WORD型をCString型に変換する方法
-
C#で文字列を数値に変換する方法
-
【C++/CLI】int型からString型...
-
バイト型のデータをLong型に変換
-
VB6.0 String型→Long型変換方法...
-
C++ 文字列変数と16進数の比較
-
C#でListとDictionaryの判別方法
-
2の補数の計算について
-
Boolean型変数の値を反転する方法
-
数字→漢数字変換
-
16進コード文字列を文字列に変換
-
ASPでVBのFormat関数のような機...
-
10進数を2進数
-
VC++ std::stringからLPCWSTRに...
-
エクセルでメールヘッダーを解...
-
対数変換のついて
-
textbox.textやlabel.captionの...
おすすめ情報