gpt4 book ai didi

c# - 静态代码和实例代码之间的歧义

转载 作者:可可西里 更新时间:2023-11-01 08:07:05 25 4
gpt4 key购买 nike

我的类中有两项:一项是公共(public)属性,另一项是带参数的静态方法。

我真的不明白为什么 Visual Studio 2010 看不出这两项之间的区别。

有人能给我解释一下吗?

代码如下:

public bool IsShipped {
get {
#region ' Test Code '
if (!String.IsNullOrEmpty(TrailerNo) || (TruckDate != Global.NODATE)) {
return true;
}
#endregion
return false;
}
}

public static bool IsShipped(string boxNumber) {
var array = GetCrate(boxNumber);
if (array != null) {
foreach (var item in array) {
if (item.IsShipped) {
return true;
}
}
}
return false;
}

这里是错误:

Error 1 Ambiguity between 'AcpClasses.AcpPackNShip.IsShipped' and 'AcpClasses.AcpPackNShip.IsShipped(string)' C:\Users\cp-jpool\My Projects\VS\Live\Common\Classes\AcpPackShip.cs 242 20 CoilPC

screenshot

最佳答案

可以将方法称为委托(delegate),而不仅仅是调用它。例如,以下可能是该方法的有效使用:

Func<string, bool> myFunction = item.IsShipped;

鉴于不需要使用括号实际调用该方法,因此无法确定 item.IsShipped 是应该引用 IsShipped 的方法组还是属性 IsShipped

即使它被允许,它也是一个可能导致困惑的点。从代码维护的角度来看,最好为属性/方法使用不同的名称,即使编译器足够聪明,知道何时使用哪一个(或者更糟,如果它只是任意选择一个)。

关于c# - 静态代码和实例代码之间的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12323838/

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