型パラメーターがたまたま文字列の場合は ToString() を使用し、それ以外の場合はキャストしますが、キャストが機能しない場合は null を返します。基本的にv
、例外をスローすることなく、可能な限り多くの情報を取得します。
T
キャストを試みる前に、それが実際に aであることを確認しますstring
が、コンパイラはまだファンではありません。
Cannot convert type 'string' to 'T'
そして、ここに私の方法があります:
public T? Convert<T>(object v)
{
if (typeof(T) == typeof(string)) {
return (T)v.ToString(); // Cannot convert type 'string' to 'T'
} else try {
return (T)v;
} catch (InvalidCastException) {
return null;
}
}
また、これがある種の許されない罪であるかどうかも教えてください。型が混在する可能性のあるデータ構造を処理するために使用しています。