-7

函数重载如何节省内存?

以下两种函数定义有什么区别,应该使用哪一种?

1)

ADD(a,b)
ADD(a,b,c)
ADD(a,b,c,d)

2)

AddTwoNumbers(a,b)
AddThreeNumbers(a,b,c)
AddFourNumbers(a,b,c,d)
4

6 回答 6

9

函数重载如何节省内存。

在运行时,它不会。重载在编译时解决,因此对性能没有影响。

以下两种类型的函数定义有什么区别,

它们是重载函数,采用多个参数,IMO 将更具可读性

应该使用哪一个?

重载将更具可读性,(您也可能会看到Member Overloading - MSDN)但如果您使用的是 C# 4.0 或更高版本,那么您也可以使用可选参数

像这样定义它:

public int ADD(int a, int b, int c = 0, int d = 0)
{
    //..... your code
    return result;
}

像这样称呼它:

ADD(2, 3);
ADD(2, 3, 4);
ADD(2, 3, 4, 5);
于 2013-04-11T07:42:51.490 回答
4

函数重载不会节省内存。

于 2013-04-11T07:42:03.877 回答
3

当我们编写重载方法时,它不会节省任何空间,也不会提高性能。它仅用于更好的可读性和实现多态性。

于 2013-04-11T07:42:44.160 回答
2

好吧,区别在于名称;-)。关于你应该使用哪一个...长名称使用更多字节的内存,但这在任何可以运行 C#-4 的系统中都应该可以忽略不计,所以只使用你最喜欢的。

我个人会使用:

Add(a,b);
Add(a,b,c);
Add(a,b,c,d);

参数列表是多余的XXXNumbers,所以它什么也没提供。

而且全大写的版本很丑。

于 2013-04-11T07:43:36.927 回答
0

顺便说一句,这些只是函数调用,而不是它们的原型/定义

1)

ADD(a,b)
ADD(a,b,c)
ADD(a,b,c,d)

这些将充当重载函数

2)

AddTwoNumbers(a,b)
AddThreeNumbers(a,b,c)
AddFourNumbers(a,b,c,d)

这三个将像三个不同的功能(不重载)。

重载的函数具有相同的函数名称和不同数量的参数。在内部发生“名称修改”,编译器必须创建三个不同的函数。它在节省内存方面没有多大帮助,但提高了可读性

于 2013-04-11T07:44:45.517 回答
0

函数重载永远不会节省空间,内部编译器会创建两个不同版本的函数,并且根据调用它会调用不同版本的函数。

函数重载使您的代码更具可读性。

1)

ADD(a,b)
ADD(a,b,c)
ADD(a,b,c,d)

2)

AddTwoNumbers(a,b)
AddThreeNumbers(a,b,c)
AddFourNumbers(a,b,c,d)

这类似于重载,但上面的代码更具可读性。

于 2013-04-11T07:52:19.623 回答