探讨C#的out关键字

以下两个方法有什么区别?
<pre>
static void Split(ArrayList source, ArrayList result1,
                ArrayList result2)
{
    if (source == null)
    {
        result1 = null;
        result2 = null;

        return;
    }

    result1.Add(null);
    result2.Add(null);
}

static void Split2(ArrayList source, out ArrayList result1,
                out ArrayList result2)
{
    if (source == null)
    {
        result1 = null;
        result2 = null;

        return;
    }

    result1.Add(null);
    result2.Add(null);
}
</pre>
想知道答案请看下文······

Split()与Split2()两个方法主体没有任何区别,只是方法Split2()的最后两个参数为out参数导致无法编译,编译器提示以下信息:

错 误    1    使用了未赋值的 out 参数“result1”    F:\Documents and Settings\linhen\My Documents\Visual Studio 2005\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs    33    13    ConsoleApplication1
错 误    2    使用了未赋值的 out 参数“result2”    F:\Documents and Settings\linhen\My Documents\Visual Studio 2005\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs    34    13    ConsoleApplication1
错 误    3    控制离开当前方法之前必须对 out 参数“result1”赋值    F:\Documents and Settings\linhen\My Documents\Visual Studio 2005\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs    23    21    ConsoleApplication1
错 误    4    控制离开当前方法之前必须对 out 参数“result2”赋值    F:\Documents and Settings\linhen\My Documents\Visual Studio 2005\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs    23    21    ConsoleApplication1

错误1、2是由于out 参数的值不会传递到 out 参数,所以必须在方法内部进行初始化。错误3、4则是由于在方法返回之前必须为 out 参数赋值。

转载于:https://www.cnblogs.com/SamZhang/archive/2007/07/11/814639.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值