你能用关键字作为参数吗?

时间:2018-03-01 18:07:29

标签: c#

有没有办法将关键字用作参数?我想创建一个名为BytesToValue()的方法,它的外观如下:

public static T BytesToValue<T>(byte[] buffer, T type)
{
    string retType = typeof(T).ToString();

    if (retType.Contains(".Byte"))
    {
        // code here.
    }
    else if (retType.Contains(".Int16"))
    {
       // code here.
    }
    // and so on with all other types.
}

我希望T type参数只接受一个关键字,例如BytesToValue(new byte[] { 0, 0, 0, 0 }, float),有没有办法将关键字用作参数?我知道这个例子不会工作,但有没有办法使它工作?如果没有那么我该怎么办?

1 个答案:

答案 0 :(得分:6)

您甚至可以删除第二个参数,只使用通用类型:

public static T BytesToValue<T>(byte[] buffer)
{
    Type type = typeof(T);

    if (type == typeof(byte))
    {
        // code here.
    }
    else if (type == typeof(short))
    {
       // code here.
    }

    // and so on with all other types.
}

或者,如果您愿意,可以让您的字符串进行比较,甚至可以使用带有类型的开关盒(C#7)。