函数重载:C# VS JS

在调用C#的函数时,必须匹配函数的签名,但在有些场合中我们需要让同一个函数能操作不同的变量,这就要使用重载函数这一技术。函数重载允许创建同名的多个函数,这些函数可使用不同的参数类型,在调用函数时会根据使用的参数类型执行相应的函数:

static void Main(string[] args)
{
    int[] i = {3,9,4,5,6,14,7,10};
    Console.WriteLine(MaxValue(i)); //返回14
    double[] j ={ 2.1, 3.4, 5, 8.8, 7.2, 5.6 };
    Console.WriteLine(MaxValue(j)); //返回8.8
    Console.ReadKey();
}
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 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;
}

1.ASP和JS的函数重载

ASP中没有函数重载,因为ASP根本不允许同名函数的存在,即使他们的参数不同。由于JS的函数在被调用时并不会去检验参数的个数是否和定义时指定的一样,这就便于让我们实现和C#类似的重载,加之JS是一种无类型的语言,所以在"重载"个人觉得比C#更出色。

function GetValue(numArray,iMaxOrMin)
{
    //当参数iMaxOrMin不存在或是其值为true时取最大,否则取最小
    if(typeof(arguments[1]) == "undefined" || arguments[1])
    {
        var maxValue = numArray[0];
        for(var i=0;i < numArray.length;i++)
        {
            if(numArray[i] > maxValue) maxValue = numArray[i];
        }
        return maxValue;
    }
    else
    {
        var minValue = numArray[0];
        for(var i=0;i < numArray.length;i++)
        {
            if(numArray[i] < minValue) minValue = numArray[i];
        }
        return minValue;
    }
}
var arr = [3,9,4,5,6,14,7,10];
document.write(GetValue(arr)); //返回14
var arr = [2.1, 3.4, 5, 8.8, 7.2, 5.6];
document.write(GetValue(arr)); //返回8.8,不像C#区分是int还是double
document.write(GetValue(arr,false)); //返回2.1,参数个数自由


上一篇: C#和JS的转义序列
下一篇: C#函数重载与委托
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 3552
发表评论
登录后再发表评论!