jjzjj

overloading

全部标签

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# - 为什么 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# - 无法访问我的扩展方法

寻找一种方法来检查一个字符串是否包含在另一个忽略大写/小写的字符串中,我找到了it:工作正常。然后,我尝试将它放入我的StringExtensions命名空间。namespaceStringExtensions{publicstaticclassStringExtensionsClass{//...publicstaticboolContains(thisstringtarget,stringtoCheck,StringComparisoncomp){returntarget.IndexOf(toCheck,comp)>=0;}}}然后:使用StringExtensions;...if

c# - C# 中的多态性、重载和泛型

classPoly{publicstaticvoidWriteVal(inti){System.Console.Write("{0}\n",i);}publicstaticvoidWriteVal(strings){System.Console.Write("{0}\n",s);}}classGenWriter{publicstaticvoidWrite(Tx){Poly.WriteVal(x);}}为什么在C#中不接受无辜的(对于C++程序员)方法Write?您可以看到编译器尝试将参数类型T与具体重载相匹配before实例化:错误3Thebestoverloadedmethodmat

c# - CS1501 : No overload for method 'ToString' takes 0 arguments?

ToString的无重载怎么可能采用零参数?零参数ToString是System.Object的一部分!编辑以回应接近投票:由于我无法将我的构建服务器升级到.NET4.5,有什么方法可以使此代码与.NET4.0/VS2010编译器?没有给我的重载一个完全不同的名称,这并不酷。所讨论的对象是一个F#区分联合,它覆盖了从System.Object继承的ToString方法。被覆盖的ToString正在被属于同一解决方案的C#项目中的代码调用。这一切都很好,直到我将ToString的额外重载添加到我的可区分联合中,它接受一个参数。这一切都在我的本地机器上完美构建和运行(VS2012,所有项目

c# - C# 中方法重载的不同行为

我在浏览C#脑筋急转弯(http://www.yoda.arachsys.com/csharp/teasers.html)时遇到了一个问题:这段代码的输出应该是什么?classBase{publicvirtualvoidFoo(intx){Console.WriteLine("Base.Foo(int)");}}classDerived:Base{publicoverridevoidFoo(intx){Console.WriteLine("Derived.Foo(int)");}publicvoidFoo(objecto){Console.WriteLine("Derived.Foo(

c# - 为什么这两个方法没有歧义呢?

这是ApiController中Ok()方法的签名:protectedinternalvirtualOkResultOk();这是我的RestController类(从ApiController扩展)中的方法://NotethatI'mnotoverridingbasemethodprotectedIHttpActionResultOk(stringmessage=null);因为OkResult实现了IHttpActionResult,所以这两个方法都可以这样调用:IHttpActionResultresult=Ok();事实上,这就是我在我的应用程序中所做的。我的类Persiste

c# - 重载泛型方法

当调用用于存储对象的通用方法时,有时需要以不同方式处理特定类型。我知道您不能基于约束进行重载,但任何其他替代方案似乎都会出现其自身的问题。publicboolSave(Tentity)whereT:class{...somestoragelogic...}我想做的是类似下面的事情:publicboolSave(Tentity){...speciallogic...}过去,我们的团队创建了“一次性”方法来保存这些类,如下所示:publicboolSaveSpecificClass(SpecificClasssc){...speciallogic...}但是,如果您不知道该功能的存在,并且