gpt4 book ai didi

c# - 具有泛型的 Lambda

转载 作者:行者123 更新时间:2023-11-30 14:59:06 26 4
gpt4 key购买 nike

IDictionary<string, string> map = str.Split('|')
.ToDictionary(s => s.Split('@')[0], s => s.Split('@')[1]);

上面的语句有效。但我想将其更改为通用的 IDictionary

public class CSVMap <TKey, TValue>
{
public IDictionary<TKey, TValue> func (string str)
{
IDictionary<TKey, TValue> map = str.Split('|').ToDictionary (ConvertValue<TKey>(s => s.Split('@')[0]), ConvertValue<TValue>(s => s.Split('@')[1]));

}
public static T ConvertValue<T>(string value)
{
return (T)Convert.ChangeType(value, typeof(T));
}

ConvertValue 将拆分后的字符串转换为TKeyTValue 的类型。

但我在 ConvertValue 部分遇到了这些错误:

error CS1660: Cannot convert lambda expression to type 'string' because it is not a delegate type
error CS1660: Cannot convert lambda expression to type 'string' because it is not a delegate type

我不确定错误的含义或如何解决此类问题。

最佳答案

您将 lambda 表达式而不是值传递给 ConvertValue 函数。不确定这是否符合您的预期,但这至少是正确的语法。

IDictionary<TKey, TValue> map =  str.Split('|').ToDictionary (s=>ConvertValue<TKey>(s.Split('@')[0]), s=>ConvertValue<TValue>(s.Split('@')[1]));

关于c# - 具有泛型的 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17310062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com