Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 静态代码和实例代码之间的歧义_C#_Visual Studio 2010_Oop - Fatal编程技术网

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

C# 静态代码和实例代码之间的歧义,c#,visual-studio-2010,oop,C#,Visual Studio 2010,Oop,我的类中有两个项:一个是公共属性,另一个是接受参数的静态方法 我真的不明白为什么VisualStudio2010无法看到这两个项目之间的差异 谁能给我解释一下这个吗 代码如下: public bool IsShipped { get { #region ' Test Code ' if (!String.IsNullOrEmpty(TrailerNo) || (TruckDate != Global.NODATE)) { return true; }

我的类中有两个项:一个是公共属性,另一个是接受参数的静态方法

我真的不明白为什么VisualStudio2010无法看到这两个项目之间的差异

谁能给我解释一下这个吗

代码如下:

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;
}
以下是错误:

错误1“AcpClasses.AcpPackNShip.IsShipped”和“AcpClasses.AcpPackNShip.IsShipped(字符串)”C:\Users\cp jpool\My Projects\VS\Live\Common\Classes\AcpPackShip.cs 242 20 CoilPC之间存在歧义


可以使用不同的签名重载方法,但不能使用与方法同名的字段或属性

这是因为方法的原始名称计算为方法组,在创建委托时使用

这段代码清楚地显示了问题:

bool b = item.IsShipped;
Func<string, bool> d = item.IsShipped;
bool b=item.IsShipped;
Func d=项目已交付;

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

Func<string, bool> myFunction = item.IsShipped;
Func myFunction=item.IsShipped;
考虑到该方法实际上不需要用括号调用,因此无法确定
项。IsShipped
是否应该引用
IsShipped
的方法组,或者是
IsShipped
的属性

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