次のプログラムは "We have something else"を出力します。どのようにして渡される型のデータ型を適切に決定するのですか?ジェネリックスで型を決定する
答えて
キーワードはis
です。
if(aType is string)
Console.WriteLine("We have a string");
else
Console.WriteLine("We have something else");
この種のロジックを使用する際に注意すべきことの一つはis
が予期しない動作につながる可能性のスーパータイプに対してtrueを返すということです。
if(myObj is object)
Console.WriteLine("This will always print");
else if(myObj is int)
Console.WriteLine("This will never print");
これでうまくいきません –
あなたの例では、 'string'ではなく' Type'を渡しています。なぜなら、これは "動作していません"という理由です。 –
@Vince:つまり、 'aType.GetType()は文字列です.'は間違った構文です。 Wesleyのように 'aType is string 'でなければなりません。 –
(小さい)有限リストからタイプを探している場合は、「is」を使用できます。
typeof(string)
はType
を返します。
したがって、AFunction<Type>(typeof(string))
を呼び出すことをコンパイラが推測します。
GetType
Type
のインスタンスのタイプType
を表すType
を返します。
typeof(Type)
はtypeof(string)
と等しくないので、結果はまったく同じです。
あなたは
AFunction<string>("Hello World");
void AFunction<T>(T value)
{
if (value is string) ...
}
または
AFunction(typeof(string));
void AFunction(Type type)
{
if (type == typeof(string)) ...
}
または
AFunction<string>();
void AFunction<T>()
{
if (typeof(T) == typeof(string)) ...
}
を意味しましたか?
void AFunction<T>(T aType)
{
if ((aType as Type).Name == "String")
{
Console.WriteLine("We have a string");
}
else
{
Console.WriteLine("We have something else");
}
}
いいえ私はタイプのタイプを決定したい –
@Vince:タイプのタイプは 'タイプ'です。 'typeof(string).GetType()== typeof(Type)' – dtb
"タイプのタイプはタイプ" LOL; "です。 –
。 あなただけの、次のようにis
キーワードを使用し、その後AFunctionにオブジェクトの種類を送信すると:
void AFunction(Object aType)
{
if (aType is string) {
Console.WriteLine ("We have a string");
} else {
Console.WriteLine ("We have something else");
}
}
をちなみに、私は、ジェネリック型は使用状況のこの種のためではないと思われます。
私はあなたがこの状況でジェネリック型を使用する必要はありませんだと思う:あなたはAFunctionこのような何か作ることができ、あなたの現在のコールを使用して
- 1. Castle Windsorでジェネリックスを解決する
- 2. Javaジェネリックス型キャスティングが必要ですか?
- 3. C#ジェネリックス:参照型と値
- 4. クラス型パラメータの型を決定する型付き
- 5. Javaの名詞型決定
- 6. 式の型の決定
- 7. 決定型変換は、プログラム
- 8. 動的型の戻り値型を決定する
- 9. ジェネリック型を入力しますが、Javaジェネリックスで独自の型を指定しない
- 10. FBグラフAPIでIDを持つオブジェクトの型を決定する
- 11. 関数型プログラミングにおける関数の型の決定
- 12. javaジェネリックスで特定のメソッドを実装するための型パラメータを強制的に
- 13. Web-Harvestは、テーブルの列ヘッダーでデータ型を決定します。
- 14. 型のサブタイプと型自体を許可するJavaジェネリックス式を記述できますか?
- 15. 型定義の循環依存関係を解決する
- 16. 未解決のコンパイルの問題:型parseInt(String)の型が未定義です
- 17. ジェネリックスを使用したUnity XML設定
- 18. 推論の型が制約から型を決定できない理由
- 19. 実行時に決定された型でオブジェクトをインスタンス化する
- 20. XElementからDataContract型を決定します
- 21. Javaジェネリックスがジェネリック型の型変換を許可しないのはなぜですか?
- 22. Struts 2 - マップとジェネリックスの型変換の問題
- 23. デザインヘルプ!列挙型の工場変圧器のJavaジェネリックス!
- 24. これはジェネリックスとC#の動的データ型の適切な使用ですか?
- 25. Haskellの定数式の型はどうやって決めるのですか?
- 26. Mono.Cecilを使用して値型のサイズを決定する方法
- 27. Javaジェネリックスのパラメータを渡す
- 28. Hibernateマッピング例外:カラムの型を決定できませんでした:[org.hibernate.mapping.Column]
- 29. Mercury:高次データ型の決定論を宣言する方法は?
- 30. Java:オブジェクトの配列内のオブジェクトの型を決定する方法は?
あなたは何を達成しようとしていますか?文字列が印刷されますか? – strager