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