我有类似的代码:
int GetIntValue(string name)
{
string valueString=GetValue(name);
int value=int.Parse(valueString);
return value;
}
double GetDoubleValue(string name)
{
string valueString=GetValue(name);
double value=double.Parse( valueString, System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture);
return value;
}
以及其他类型的数字类型的类似代码。
我想写这样的东西:
T getValue<T>(string name)
{
string valueString=GetValue(name);
T value=T.Parse(valueString, System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture);
return value;
}
但这是行不通的(T太笼统了)。如何更改此代码以在c#中使用泛型?
我正在使用.net 4。
编辑
固定代码以消除错字。
最佳答案
如果Convert.ChangeType
实现T
,则可以使用IConvertible
:
T getValue<T>(string name) where T : IConvertible
{
string valueString=GetValue(string);
T value = (T)Convert.ChangeType(valueString, typeof(T));
return value;
}