gpt4 book ai didi

c# - 具有不同签名的函数,但编译器调用了错误的函数

转载 作者:行者123 更新时间:2023-11-30 13:25:56 24 4
gpt4 key购买 nike

我有两个功能:

partial class Database
{
public void Insert(string table, params string[] values)
{
string query = "INSERT INTO [{0}] VALUES ('{1}')";
ExecuteNonQuery(string.Format(query, table, string.Join("','", values)));
}

public string Insert(string table, string returnedColumn, params string[] values)
{
string query = "INSERT INTO [{0}] OUTPUT INSERTED.{1} VALUES ('{2}')";
return ExecuteScalar(string.Format(query, table, returnedColumn, string.Join("','", values))).ToString();
}
}

它们都在数据库中的表上执行 INSERT。不同之处在于,第一个仅将数据插入数据库,而第二个还使用 SQL 中的 OUTPUT 关键字从插入行的其中一列返回值。

问题是当我尝试调用第一个函数时,编译器调用了第二个函数。因此,例如,如果我有这段代码:

Database DB = new Database();
DB.Insert("tableName", "some data");

Visual Studio 实际上将其视为我调用了第二个函数: enter image description here

问题是什么,我该如何解决?谢谢。

最佳答案

您可以将第二个参数包装在一个数组中,这将强制选择您想要的重载:

DB.Insert("tableName", new[] { "some data" });

关于c# - 具有不同签名的函数,但编译器调用了错误的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35773419/

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