Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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#_Struct - Fatal编程技术网

C# 结构中的重写运算符在使用时出错;无法应用…“;

C# 结构中的重写运算符在使用时出错;无法应用…“;,c#,struct,C#,Struct,MyDate是一个包含年、月、日、跨构造函数和其他一些方法的结构。我想我会试着覆盖一些操作员,看看我是否能做到这一点。我在MSDN中找到了一个在结构中重写运算符的示例,并尝试用我需要的操作复制它。 我将此代码添加到结构MyDate以覆盖“-”,减去 public static int operator -(MyDate a, MyDate b) { return a.Span - b.Span; } 当我在另一个程序中使用它时: MyDat

MyDate是一个包含年、月、日、跨构造函数和其他一些方法的结构。我想我会试着覆盖一些操作员,看看我是否能做到这一点。我在MSDN中找到了一个在结构中重写运算符的示例,并尝试用我需要的操作复制它。 我将此代码添加到结构MyDate以覆盖“-”,减去

   public static int operator -(MyDate a, MyDate b)
    {
        return a.Span - b.Span;
    }
当我在另一个程序中使用它时:

        MyDate aDate = new MyDate(2, 15, 1990);
        MyDate bDate = new MyDate(3, 15, 1990);
        lAns = bDate - aDate;
我得到一个错误: 错误1运算符“-”不能应用于“EulerLibrary.MyDate”和“EulerLibrary.MyDate”类型的操作数C:\Users\Henry Wollman\Documents\Visual Studio 2010\Projects\EulerProblem19\EulerProblem19\Form1.cs 115 20 EulerProblem19


你有没有想过为什么这不起作用?正如我前面所说,它准确地反映了MSDN中的示例。

假设您在问题中提供的
运算符-
代码包含在
MyDate
的定义中,那么您发布的内容应该可以正常工作


因为您说“当我在另一个程序中使用它时”,所以我假设发生的情况是定义了
MyDate
的程序集已过时(例如,另一个程序正在拾取与您添加重载运算符的程序集不同的副本)。可能是
MyDate
程序集的编译错误,并且没有重建它?

假设您在问题中提供的
运算符-
代码包含在
MyDate
的定义中,那么您发布的内容应该可以正常工作


因为您说“当我在另一个程序中使用它时”,所以我假设发生的情况是定义了
MyDate
的程序集已过时(例如,另一个程序正在拾取与您添加重载运算符的程序集不同的副本)。可能是
MyDate
程序集出现编译错误,并且没有重新生成该程序集?

-
没有为您自己的数据类型重载。您必须重载该运算符。它应按所述方式工作。因此,您的实际代码不是描述的代码。您可以发布一个自包含的复制吗?这应该可以,您在其他项目中引用的是旧版本的程序集吗?
-
不会重载您自己的数据类型。您必须重载该运算符。它应按所述方式工作。因此,您的实际代码不是描述的代码。您可以发布一个自包含的复制吗?这应该可以,您是否在其他项目中引用了程序集的旧版本?我认为这可能是问题所在,并且已经重新编译了包含MyDate结构定义的库。我在图书馆遇到了点小麻烦。我找不到一种简单的方法来指定调试或发布版本,有时符号文件没有包含在内,但引用似乎没有给我一种方法来确保符号被加载。我已经设计了一个系统,在VisualStudio的一个实例中修改和构建库,然后我的程序在另一个实例中使用库,它通常可以工作。我所做的其他改变也出现了。我会给它看一看。我不得不挖掘一点,但最终发现引用指向了错误的dll。现在它可以编译了,我只需要调试一些东西。谢谢你的帮助。我认为这可能是问题所在,并重新编译了包含MyDate结构定义的库。我在图书馆遇到了点小麻烦。我找不到一种简单的方法来指定调试或发布版本,有时符号文件没有包含在内,但引用似乎没有给我一种方法来确保符号被加载。我已经设计了一个系统,在VisualStudio的一个实例中修改和构建库,然后我的程序在另一个实例中使用库,它通常可以工作。我所做的其他改变也出现了。我会给它看一看。我不得不挖掘一点,但最终发现引用指向了错误的dll。现在它可以编译了,我只需要调试一些东西。谢谢你的帮助。