草庐IT

c++ - 在 C++ 中重载 **

全部标签

c# - 您可以重载 Sum 以添加自定义类型吗

我有一个包含货币和金额的Money结构。我希望能够使用linq对列表求和。publicstructMoney{publicstringCurrency{get;set;}publicdecimalAmount{get;set;}publicstaticMoneyoperator+(Moneym1,Moneym2){if(m1.Currency!=m2.Currency)thrownewInvalidOperationException();returnnewMoney(){Amount=m1.Amount+m2.Amount,Currency=m1.Currency};}}鉴于上面的代

c# - 方法重载和多态性

classProgram{staticvoidMain(string[]args){ListmyList=newList{newA(),newB(),newC()};foreach(varainmyList){Render(a);}Console.ReadKey();}privatestaticvoidRender(Ao){Console.Write("A");}privatestaticvoidRender(Bb){Console.Write("B");}privatestaticvoidRender(Cc){Console.Write("C");}}classA{}classB:A

c# - .NET 中的运算符重载

在什么情况下您会考虑在.NET中重载运算符? 最佳答案 我会强烈考虑在我覆盖Equals的任何地方重载==和!=我会考虑(不太强烈)在我实现IComparable的任何地方重载比较运算符我会考虑为基本数字类型重载算术运算符我会考虑为“包装”类型(如Nullable)提供显式转换我非常很少考虑提供隐式转换黄金法则是不要在含义不完全明显时重载运算符。例如,我认为在Stream上使用+运算符会很奇怪。-它可能意味着“在这里制作一个可写的T,以便写入结果写入两者”或者它可能意味着“一个接一个地读取”或者可能是其他东西。根据我的经验,除了==

c# - 真的不可能使用返回类型重载吗?

我用两种方法在MSIL中制作了一个小DLL:floatAddNumbers(int,int)intAddNumbers(int,int)有些人可能知道,MSIL允许您创建具有相同参数的方法,只要您具有不同类型的返回类型(即所谓的返回类型重载)。现在,当我尝试在C#中使用它时,正如我所期待的那样,它引发了一个错误:floatf=ILasm1.MainClass.AddNumbers(1,2);错误是:Thecallisambiguousbetweenthefollowingmethodsorproperties:'ILasm1.MainClass.AddNumbers(int,int)'

c# - 在派生类中重载基方法

所以我正在使用C#来查看它是否与这篇文章中的C++行为相匹配:http://herbsutter.com/2013/05/22/gotw-5-solution-overriding-virtual-functions/当我遇到这种非常奇怪的行为时:publicclassBaseClass{publicvirtualvoidFoo(inti){Console.WriteLine("CalledFoo(int):"+i);}publicvoidFoo(stringi){Console.WriteLine("CalledFoo(string):"+i);}}publicclassDerive

c# - 如何创建多个 CRUD 方法重载?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion如果我有一个类以某种方式表示到我的数据库中特定表的映射。这个类包含大约30个属性。我已经创建了CRUD方法。我发现自己需要另一个(UPDATE)方法,它应该只更新两个字段。用简单的例子应该怎样做才好?使用我的存在方法,填充整个对象并更新所有字段,包括我想要的两个字段?(无用功)用另一个名称创建静态方法(但我想保留我的方法名称,因为它很有表现力)!并接受两个参数?

c# - 为什么 C# 对同一类型的不同值的重载方法调用不同?

我对c#方法重载和调用解析有一个疑问。假设我有以下C#代码:enumMyEnum{Value1,Value2}publicvoidtest(){method(0);//thiscallsmethod(MyEnum)method(1);//thiscallsmethod(object)}publicvoidmethod(objecto){}publicvoidmethod(MyEnume){}请注意,我知道如何使其工作,但我想知道为什么对于int(0)的一个值它调用一种方法而对于另一个(1)它调用另一个方法。这听起来很尴尬,因为这两个值具有相同的类型(int),但它们针对不同的方法“链接

c# - 通用接口(interface)重载。有效术语?

这是一个非常基本的方法重载示例,两个方法具有相同的名称但具有不同的签名:intMyMethod(inta)intMyMethod(inta,stringb)现在假设我定义了两个通用接口(interface),共享完全相同的名称但具有不同数量的类型参数,例如:IMyInterfaceIMyInterface我可以说这代表“通用接口(interface)重载”吗?还是“重载”一词仅适用于这种情况下的方法?它看起来仍然与方法重载非常相似,因为我们保持完全相同的名称但改变了参数。如果我不能说“通用接口(interface)重载/重载”,那么对于这两个共享相同名称的不同接口(interface)

c# - 扩展方法重载选择

我有两种扩展方法:publicstaticIPropertyAssertionsShouldHave(thisTsubject){returnnewPropertyAssertions(subject);}publicstaticIPropertyAssertionsShouldHave(thisIEnumerablesubject){returnnewCollectionPropertyAssertions(subject);}现在我写了一些使用它的代码:Listcollection2=newList();collection2.ShouldHave();//firstoverloa

c# - 在泛型函数中使用重载的 operator==

考虑以下代码:classCustomClass{publicCustomClass(stringvalue){m_value=value;}publicstaticbooloperator==(CustomClassa,CustomClassb){returna.m_value==b.m_value;}publicstaticbooloperator!=(CustomClassa,CustomClassb){returna.m_value!=b.m_value;}publicoverrideboolEquals(objecto){returnm_value==(oasCustomCla