• C#中构成函数重载有哪些条件和特征


    C#中构成函数重载有哪些条件和特征? 
    1.函数名;

    2.函数返回值类型;

    3.函数参数类型;

    4.函数参数个数;

    5.函数参数顺序;

    以下是我个人总结结果:

    ◆函数名必须相同方能构成函数重载;

    ◆函数返回值类型:可以相同,也可以不同(注意:函数的返回类型不足以区分两个重载函数);

    ◆函数参数类型:必须不同;

    ◆函数参数个数:可以相同,可以不同

    ◆函数参数顺序:可以相同,可以不同;

    ◆注意:参数表的比较过程与参数名无关.

    前面介绍了在调用函数时,必须匹配函数的签名。这表明,需要让多个函数操作不同类型的变量。函数重载允许创建同名的多个函数,这些函数可使用不同的参数类型。

    例如,前面使用了下述代码,其中包含一个函数MaxValue():

    class Program

    {

    static int MaxValue(int[] intArray)

    {

    int maxVal = intArray[0];

    for (int i = 1; i < intArray.Length; i++)

    {

    if (intArray[i] > maxVal)

    maxVal = intArray[i];

    }

    return maxVal;

    }


    static void Main(string[] args)

    {

    int[] myArray = {1, 8, 3, 6, 2, 5, 9, 3, 0, 2};

    int maxVal = MaxValue(myArray);

    Console.WriteLine("The maximum value in myArray is {0}", maxVal);

    Console.ReadKey();

    }

    }

    这个函数只能用于处理int数组,现在要为不同的参数类型提供不同名称的函数,可以把上述函数重命名为IntArrayMaxValue(),添加函数DoubleArrayMaxValue()处理其他类型。另外,还可以在代码中添加如下函数:

    ...

    static double MaxValue(double[] doubleArray)

    {

    double maxVal = doubleArray[0];

    for (int i = 1; i < doubleArray.Length; i++)

    {

    if (doubleArray[i] > maxVal)

    maxVal = doubleArray[i];

    }

    return maxVal;

    }

    ...

    这里的区别是使用了double值。函数名称MaxValue()是相同的,但其签名是不同的。用相同的名称和签名定义两个函数是错误的,但因为这两个函数有不同的签名,所以是可行的。

    现在有两个版本的MaxValue(),它们的参数是int 和 double数组,分别返回一个int或double最大值。

    这种代码的优点是不必显示指定要使用哪个函数。只需提供一个数组参数,就可以根据使用的参数类型执行相应的函数。

    此时,应注意VS中IntelliSense的另一个功能。如果在应用程序中有上述两个函数,而且要在Main()中输入函数的名称,VS就可以显示出可用的重载函数。如果输入下面的代码:

    double result = MaxValue(

    VS提供了MaxValue()两个版本的信息,使用上下箭头键可以在它们之间滚动,如图6-9所示。





    6-9

    在重载函数时,应包括函数签名的所有方面。例如有两个不同的函数,它们分别带有值参数和引用参数:

    static void showDouble(ref int val)

    {

    ...

    }


    static void showDouble(int val)

    {

    ...

    }

    选择使用哪个版本纯粹是根据函数调用是否包含ref关键字来确定。下面的代码是调用引用版本:

    showDouble(ref val);

    下面的代码是调用值版本:

    showDouble(val);

    另外,函数还可以根据参数的个数等来区分。

    C#中构造函数重载的用法
    public class LanguageConfiguration
    {
    public LanguageConfiguration()
    {
    InitClass();
    }
    private void InitClass()
    {
    InitClass("LanguageConfigFile");
    }
    public LanguageConfiguration(string languageXml)
    {
    InitClass(languageXml);
    }

    private void InitClass(string languageXml)
    {

    }
    }

    用法
    LanguageConfiguration lc = new LanguageConfiguration("OperationLanguageConfigFile");
  • 相关阅读:
    Slider
    好久没更新了,发照片.....
    第二天、SQL*PLUS基本使用
    二进制方式存储图片(数据库)
    PagingBulletedList
    第四天、PL/SQL基础
    第八天、安全管理
    MutuallyExclusiveCheckBox
    第六天、视图,同义词,序列
    Rating
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/2296585.html
Copyright © 2020-2023  润新知