草庐IT

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

全部标签

c# - 如何调用基于封闭泛型的方法重载?

假设我有三种方法:voidFoo(MemoryStreamv){Console.WriteLine("MemoryStream");}voidFoo(Streamv){Console.WriteLine("Stream");}voidFoo(objectv){Console.WriteLine("object");}我调用方法Foo传递开放泛型类型的第一个参数:voidBar(){Foo(default(T));//justtoshowthescenario//default(T)ornewT()doesn'tmakeadifference,nullisirrelevanthere}我

c# - 如何使用反射获得重载的私有(private)/ protected 方法

usingSystem;usingSystem.Reflection;namespaceReflection{classTest{protectedvoidmethodname(inti){Console.WriteLine(("intheworldofthereflection-onlyi"));Console.Read();}protectedvoidmethodname(inti,intj){Console.WriteLine(("intheworldofthereflectioni,j"));Console.Read();}}classProgram{staticvoidMai

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# - 为什么 String.Contains 不直接调用最终重载?

String.Contains方法在内部看起来像这样publicboolContains(stringvalue){returnthis.IndexOf(value,StringComparison.Ordinal)>=0;}调用的IndexOf重载看起来像这样publicintIndexOf(stringvalue,StringComparisoncomparisonType){returnthis.IndexOf(value,0,this.Length,comparisonType);}这里对最终重载进行了另一个调用,然后使用签名调用相关的CompareInfo.IndexOf方法

c# - 引用所需的重载泛型方法

给定publicClassExample{publicstaticvoidFoo(intID){}publicstaticvoidFoo(intID){}}问题:将其称为“重载泛型方法”是否正确?如何在创建MethodInfo对象时指定任一方法?TypeexampleType=Type.GetType("fullyqualifiednameOfExample,namespaceOfExample");MethodInfomi=exampleType.GetMethod("Foo",BindingFlags.Public|BindingFlags.Static,null,newType[

c# - 运算符重载和优先级

在C#中,您可以重载运算符,例如+和*。在他们的数学解释中,这些运算符具有明确定义的优先顺序。这个顺序在重载时是否保持不变,它是否以某种确定性的方式改变,或者你是否也可以重载优先顺序? 最佳答案 如果重载运算符,它将始终优先于默认实现。但是,您无法更改运算符本身的优先级,因此它将保留为默认值。有关MSDN的更多信息.相关引述:User-definedoperatorimplementationsalwaystakeprecedenceoverpredefinedoperatorimplementations:Onlywhennoap

c# - 为什么不调用重载方法?

我认为被调用的方法是在运行时决定的,还是我错过了什么?示例代码:classProgram{staticvoidMain(string[]args){varmagic=newMagicClass();magic.DoStuff(newImplA());magic.DoStuff(newImplB());Console.ReadLine();}}classMagicClass{internalvoidDoStuff(Tinput)whereT:SomeBase{HiThere(input);}voidHiThere(SomeBaseinput){Console.WriteLine("Bas

c# - C# 中的反射和运算符重载

这是交易。我有一个程序将加载给定的程序集,解析所有类型及其成员并编译一个TreeView(非常类似于旧的MSDN站点),然后为TreeView中的每个节点构建HTML页面。它基本上采用给定的程序集,并允许用户为其创建自己的类似MSDN的库以用于文档目的。这是我遇到的问题:每当在定义的类中遇到运算符重载时,反射都会将其作为“MethodInfo”返回,名称设置为“op_Assign”或“op_Equality”。我希望能够捕获这些并正确列出它们,但我无法在返回的MethodInfo对象中找到任何内容以准确识别我正在查看的运算符。我绝对不想只捕获以“op_”开头的所有内容,因为那肯定(在某

c# - 我可以重载 throw 关键字吗?

我想重载throw关键字以捕获继承自Exception的类,并让它在实际抛出之前执行一些日志记录和其他操作。这可能吗?还是我必须使用常规函数?我试过:publicclasscSilException:Exception{privatestringm_strMsg;publicoverridevoidthrow(cSilExceptionex){}......} 最佳答案 注册事件AppDomain.FirstChanceException.您可以在实际抛出之前获得所有异常。在事件处理程序中,您可以检查您的exception并执行所需

c# - 为什么 C# 编译器重载解析算法将具有相同签名的静态成员和实例成员视为相等?

让我们有两个签名相同的成员,但一个是静态的而另一个不是:classFoo{publicvoidTest(){Console.WriteLine("instance");}publicstaticvoidTest(){Console.WriteLine("static");}}但是这样的代码生成会带来编译错误:Type'Foo'alreadydefinesamembercalled'Test'withthesameparametertypes但为什么呢?让我们编译成功,然后:Foo.Test()应该输出“static”newFoo().Test();应该输出“instance”不能调用静