函数重载假设我定义了这三个方法:intF1(int,int);intF1(浮动,浮动);浮动F1(int,int);我在这里调用方法F1:Console.writeline(F1(5,6).ToString()));它会调用哪个方法,为什么?第一个和第三个函数不会在同一个命名空间中编译。这是因为函数签名根据参数的类型和数量而不同,但它们是相同的。返回类型不被视为方法签名的一部分。如果命名空间中只有第一个和第二个(或第二个和第三个),则调用最合适的那个(传入整数类型的那个,因为您传入的是整数)。EricLippert有一些关于C#微妙之处的精彩博客文章。编译错误,因为在您的程序中使用了两次相同的函数签名!intF1(int,int);浮动F1(int,int);函数签名是(函数名+参数数量+每个参数的类型),这在你的情况下是相同的...classProgram{staticvoidMain(string[]args){Add(3,4,3);}publicstaticvoidAdd(intFN,intSN){Console.WriteLine("Totalis{0}",FN+SN);}publicstaticvoidAdd(intFN,intSN,intTN){Console.WriteLine("Totalis{0}",FN+SN+TN);方法重载和函数重载可以互换使用。方法重载允许一个类有多个同名的方法。但有不同的签名。C#函数可以根据参数的数量、类型(int、float等)和种类(Value、ref或out)进行重载。该方法的签名不包括返回类型和params修饰符。因此,不可能根据返回类型和参数修饰符来重载函数。你试过了吗你认为应该这样做:intF1(int,int);或FloatF1(int,int);然而,函数重载对返回值不起作用——它是唯一必须的参数类型,所以它甚至不能编译。在函数重载中,函数具有相同的名称,但它们在参数类型或参数数量方面有所不同。在函数重载中,不考虑函数的返回类型。所以这段代码甚至无法编译。因为您不能在一个命名空间中编写完全相同的函数。在C#中,它是参数重载,而不是函数重载。您可以更改方法的输入参数,这可能会导致不同的返回类型,但您不能指定不同的返回类型来区分您的方法。基本上,函数重载是一个重要的OOPS特性。它允许您拥有多个名称相同但方法列表不同的方法。什么是函数重载,什么不叫函数重载,为什么是编译时多态,在OOPS中的函数重载一文中有很好的解释。以上就是C#学习教程:函数重载分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
