You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Fifteen方法以使其可加入Dictionary集合初始化器?

解决Dictionary初始化器兼容Fifteen方法的问题

你遇到的CS7036编译错误,核心原因是Dictionary的集合初始化器只接受两种合法元素:

  • 直接的KeyValuePair<TKey, TValue>实例
  • 可以被解构为键、值两个参数的类型(比如C#值元组)

你之前返回的匿名对象无法被初始化器识别为合法元素,所以才会报错。这里有两种简洁可行的解决方案:

方案1:返回KeyValuePair类型

直接让Fifteen方法返回Dictionary原生支持的键值对类型,这是最直观的方式:

class Program {
 static void Main(string[] args) {
 var a = new Dictionary<string, int>() { { "12", 12 }, { "13", 13 }, Fifteen() };
 }
 static KeyValuePair<string, int> Fifteen() {
 // 两种写法都可行,C#支持元组到KeyValuePair的隐式转换
 return new KeyValuePair<string, int>("15", 15);
 // 或者简化写成:return ("15", 15);
 }
}

方案2:返回值元组

C#的值元组会被集合初始化器自动解构为Dictionary的Add方法所需的两个参数,因此也能直接兼容:

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

这两种方式都能让你期望的代码正常编译运行,本质都是让Fifteen的返回值符合Dictionary初始化器的元素要求——要么是现成的键值对,要么是能拆分成键和值的结构。

内容的提问来源于stack exchange,提问作者foxx1337

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:53:10