当前位置:  开发笔记 > 编程语言 > 正文

"重载"/"过载"/"重载"是什么意思?

如何解决《"重载"/"过载"/"重载"是什么意思?》经验,为你挑选了3个好方法。

"重载"/"过载"对编程有什么意义?



1> Filip Frącz..:

这意味着您提供的函数(方法或运算符)具有相同的名称,但具有不同的签名.例如:

void doSomething();
int doSomething(string x);
int doSomething(int a, int b, int c);


其实我不喜欢第一个例子.请注意,更改方法返回类型(在此示例中为void而不是int)不包含重载.这是一种完全不同的方法.重载仅指更改参数类型

2> Serhat Ozgel..:

基本概念

重载或"方法重载"是具有多个具有相同名称但具有不同参数的方法的概念的名称.

例如,c#中的System.DateTime类有多个ToString方法.标准ToString使用系统的默认文化将datetime转换为string:

new DateTime(2008, 11, 14).ToString(); // returns "14/11/2008" in America

而同一方法的另一个重载允许用户自定义格式:

new DateTime(2008, 11, 14).ToString("dd MMM yyyy"); // returns "11 Nov 2008"

有时参数名称可能相同,但参数类型可能不同:

Convert.ToInt32(123m);

将小数转换为int

Convert.ToInt32("123");

将字符串转换为int.

过载分辨率

为了找到要调用的最佳重载,编译器执行名为"重载分辨率"的操作.对于第一个示例,编译器只需匹配参数计数即可找到最佳方法.对于第二个示例,如果传递十进制参数,编译器会自动调用replace方法的十进制版本,如果传递字符串参数,则调用字符串版本.从可能的输出列表中,如果编译器找不到合适的调用,则会出现编译器错误,如"最佳过载与参数不匹配...".

您可以找到有关不同编译器如何执行重载决策的大量信息.



3> Gorpik..:

当一个函数有多个签名时,它会被重载.这意味着您可以使用不同的参数类型调用它.例如,您可能具有在屏幕上打印变量的功能,您可以为不同的参数类型定义它:

void print(int i);
void print(char i);
void print(UserDefinedType t);

在这种情况下,函数print()将有三个重载.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有