有没有办法将关键字用作参数?我想创建一个名为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)
,有没有办法将关键字用作参数?我知道这个例子不会工作,但有没有办法使它工作?如果没有那么我该怎么办?
答案 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)。