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

C#中如何声明(string, IDictionary<string, object>)类型变量

报错原因

你写的var sqlQuery = new (string, IDictionary<string, object>)触发编译错误,是因为C#中new (类型1, 类型2)的写法是用来构造新值元组实例的,必须在后续括号中按顺序传入对应类型的初始值,你只标注了类型没有传入初始化参数,编译器无法完成实例化自然报错。而且你是要接收已有方法的返回值,本身就不需要手动new新元组。

正确声明方式

根据使用场景选择对应写法即可:

  • 直接调用目标方法赋值,用var做隐式类型推断,是最简洁的写法,不需要手动书写完整类型签名:
var sqlQuery = 调用对应遗留系统方法();
  • 如果需要提前声明变量(比如要在不同分支逻辑中给变量赋值),可以显式指定元组类型,不需要加new关键字:
// 可以给元组成员起语义化名称,方便后续调用时识别
(string sqlText, IDictionary<string, object> parameters) sqlQuery = default;

// 后续逻辑中赋值
if (满足某条件)
{
    sqlQuery = 调用对应遗留系统方法();
}

如果不需要给元组成员命名,也可以直接简写类型声明:

(string, IDictionary<string, object>) sqlQuery = default;

补充说明:如果确实需要手动构造该类型的元组实例,必须传入两个位置的匹配参数,例如var temp = new (string, IDictionary<string, object>)("select * from test", new Dictionary<string, object>());,但接收方法返回值的场景下不需要做这个操作,直接赋值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:57:22