gpt4 book ai didi

c# - 在 C# 中编写静态和非静态方法时如何避免 'call is ambiguous...' 错误?

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

我有许多表示业务事务调用的类:执行适当的存储过程。

现在看起来像这样:

public static class Request
{
public static void Approve(..) {
using(connection) {
command.Text = "EXEC [Approve] ,,"]
command.ExecuteNonQuery();
}
}
}

我想让它们更加线程安全:

public class Request {
public static void Approve(..) {
new Request().Approve(..);
}

internal void Approve(..) {
using(connection) {
command.Text = "EXEC [Approve] ,,"]
command.ExecuteNonQuery();
}
}
}

但收到下一条错误消息:

The call is ambiguous between the following methods or properties: 'MyNamespace.Request.Approve(..)' and 'MyNamespace.Request.Approve(..)'

我如何强制、标记我正在从静态调用非静态实例方法?

或者我不能在不重命名其中一种方法的情况下这样做?或者将静态方法移动到另一个类等

最佳答案

C# allows 不允许通过实例引用调用静态方法。因此 - 方法必须以不同的方式命名或使用参数重载来区分静态方法和实例方法。

在您的示例中,由于 Approve() 方法是内部方法,因此重命名它可能是您最简单的选择。

至于标记一个方法是静态的......我(个人)认为这个名字是区分两者的完美方式 - 为什么要发明更复杂的东西。

关于c# - 在 C# 中编写静态和非静态方法时如何避免 'call is ambiguous...' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1556459/

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