如何将对象类型转换为其他类型?
"\\s*,\\s*"
答案 0 :(得分:4)
尝试这样:
TypeA a = (TypeA)(object)t;
答案 1 :(得分:3)
一种方法是使用as
public T Get<T>(T t)
{
if(t is TypeA) {
TypeA a = t as TypeA;
}
}
另一种方法是使用Convert
public T Get<T>(T t)
{
if(t is TypeA) {
TypeA a = (TypeA) Convert.ChangeType(t, typeof(TypeA));
}
}
答案 2 :(得分:1)
https://dotnetfiddle.net/7tb2Fl
我不能在这里得到错误。它会投好吗
using System;
public class Program
{
public class TypeA
{
public int Id;
}
public class TypeB : TypeA
{
public int name;
}
public static void Main()
{
var t = new TypeB{Id = 1, name = 15};
if (t is TypeA)
{
TypeA a = (TypeA)t;// no error
Console.WriteLine(a.Id); // no error
}
}
}
答案 3 :(得分:-1)
//只是想到了,没测试过:
public T ConvertType<T>(Object obj)
{
if (obj is T)
return (T)Convert.ChangeType(obj, typeof(T));
return default(T);
}