c#如何在运行时将模板类型与内置类型进行比较

时间:2014-11-06 15:22:43

标签: c# generics runtime

代码没有编译,任何人都知道如何正确编写这个逻辑?

public void FilBuff<T>(T p_tInput) 
    {
        if(typeid(p_tInput )== typeof(string))
        {
            m_bBuff = System.Text.Encoding.ASCII.GetBytes((string)p_tInput);
        }
    }

1 个答案:

答案 0 :(得分:4)

使用typeof(T)。像这样:

public void FilBuff<T>(T p_tInput) 
{
    if(typeof(T) == typeof(string))
    {
        m_bBuff = System.Text.Encoding.ASCII.GetBytes((string)p_tInput);
    }
}

顺便说一句,你在使用泛型(而不是模板)做的事情有点奇怪。在你的情况下使用重载方法可能更好。