gpt4 book ai didi

c# - 字典初始化器的类型

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

我有这个代码:

class Program
{
static void Main(string[] args)
{
var a = new Dictionary<string, int>()
{
{ "12", 12 },
{ "13", 13 },
};
}

static object Fifteen()
{
//return new object[] { "15", 15 };
return new {key = "15", value = 15};
}
}

我怎么写Fifteen以便我可以将它添加到初始化程序中?

我想要这个,那个编译:

        var a = new Dictionary<string, int>()
{
{ "12", 12 },
{ "13", 13 },
Fifteen()
};

L.E.编译错误是:error CS7036: There is no argument given that corresponds to the required formal parameter 'value' of 'Dictionary<string, int>.Add(string, int)'

最佳答案

您需要更改您的 Fifteen 方法,使其返回一个 KeyValuePair,而不是一个 object,这样调用者该方法可以访问您提供的数据(匿名类型只应在它们以与创建它们相同的方法使用时使用):

static KeyValuePair<string, int> Fifteen()
{
return new KeyValuePair<string, int>("15", 15);
}

然后您需要向 Dictionary 添加一个扩展方法,以便它有一个 Add 方法接受 KeyValuePair 而不是两个参数:

public static void Add<TKey, TValue>(this Dictionary<TKey, TValue> dictionary, KeyValuePair<TKey, TValue> pair)
{
dictionary.Add(pair.Key, pair.Value);
}

之后你声明的代码编译并运行得很好。

关于c# - 字典初始化器的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50215850/

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