是否可以创建一个 returns "new KeyValuePair<T, T>(key, value)" 的方法
Is it possible to create a method which returns "new KeyValuePair<T, T>(key, value)"
我想要一个方法 returns 一个新的 KeyValuePair< T, T>
为什么?因为我想使用像
这样的方法
...
GetAsKVP("A", "B"),
GetAsKVP("C", "D"),
...
而不是
...
new KeyValuePair<string, string>("A", "B"),
new KeyValuePair<string, string>("C", "D")
...
当我将值添加到 params KeyValuePair[] pKVP
速度更快,可读性更好。
我试过了
public static KeyValuePair<T, T> GetAsKVP(T key, T value)
{
return new KeyValuePair<T, T>(key, value);
}
并得到类似的错误;
The type or namespace name 'T' could not be found (are you missing a
using directive or an assembly reference?)
在方法声明中添加T
:
public static KeyValuePair<T, T> GetAsKVP<T>(T key, T value)
{
return new KeyValuePair<T, T>(key, value);
}
或者,如果您想要键和值的不同类型,请使用:
public static KeyValuePair<TKey, TValue> GetAsKVP<TKey, TValue>(TKey key, TValue value)
{
return new KeyValuePair<TKey, TValue>(key, value);
}
您可以按照描述使用它:
var kvp1 = GetAsKVP("foo", "bar");
var kvp2 = GetAsKVP(123, 456);
var kvp3 = GetAsKVP("CurrentDateTime", DateTime.UtcNow);
试试这个,
public static KeyValuePair<TKey, TValue> GetAsKVP<TKey, TValue>(TKey key, TValue value)
{
return new KeyValuePair<TKey, TValue>(key, value);
}
泛型方法必须定义类型参数,返回或接受泛型类型并不暗示它们。
在方法声明中有两个同名的类型参数没有意义。如果键和值总是相同的类型,这不是很通用,你可以这样做,
public static KeyValuePair<T, T> GetAsKVP<T>(T key, T value)
{
return new KeyValuePair<T, T>(key, value);
}
您需要在方法头(名称后)声明T
public static KeyValuePair<T,T> GetAsKVP<T>(T key, T value)
{
return new KeyValuePair<T, T>(key, value);
}
如果编译器无法自动确定数据类型,您可能希望将其添加到函数调用中:
GetAsKVP<string>("A", "B")
我想要一个方法 returns 一个新的 KeyValuePair< T, T>
为什么?因为我想使用像
这样的方法...
GetAsKVP("A", "B"),
GetAsKVP("C", "D"),
...
而不是
...
new KeyValuePair<string, string>("A", "B"),
new KeyValuePair<string, string>("C", "D")
...
当我将值添加到 params KeyValuePair[] pKVP
速度更快,可读性更好。
我试过了
public static KeyValuePair<T, T> GetAsKVP(T key, T value)
{
return new KeyValuePair<T, T>(key, value);
}
并得到类似的错误;
The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
在方法声明中添加T
:
public static KeyValuePair<T, T> GetAsKVP<T>(T key, T value)
{
return new KeyValuePair<T, T>(key, value);
}
或者,如果您想要键和值的不同类型,请使用:
public static KeyValuePair<TKey, TValue> GetAsKVP<TKey, TValue>(TKey key, TValue value)
{
return new KeyValuePair<TKey, TValue>(key, value);
}
您可以按照描述使用它:
var kvp1 = GetAsKVP("foo", "bar");
var kvp2 = GetAsKVP(123, 456);
var kvp3 = GetAsKVP("CurrentDateTime", DateTime.UtcNow);
试试这个,
public static KeyValuePair<TKey, TValue> GetAsKVP<TKey, TValue>(TKey key, TValue value)
{
return new KeyValuePair<TKey, TValue>(key, value);
}
泛型方法必须定义类型参数,返回或接受泛型类型并不暗示它们。
在方法声明中有两个同名的类型参数没有意义。如果键和值总是相同的类型,这不是很通用,你可以这样做,
public static KeyValuePair<T, T> GetAsKVP<T>(T key, T value)
{
return new KeyValuePair<T, T>(key, value);
}
您需要在方法头(名称后)声明T
public static KeyValuePair<T,T> GetAsKVP<T>(T key, T value)
{
return new KeyValuePair<T, T>(key, value);
}
如果编译器无法自动确定数据类型,您可能希望将其添加到函数调用中:
GetAsKVP<string>("A", "B")