C#强制转换对象类型

时间:2017-05-10 12:31:08

标签: c# casting

如何将对象类型转换为其他类型?

"\\s*,\\s*"

4 个答案:

答案 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);
}