一周学会C#(函数二)

一周学会C#(函数二)

C#才鸟(QQ:249178521)

4.引用型参数

·                    引用型参数是实参的一个别名

w       没有发生复制

w        实参必须预先被赋值

w       实参必须是一个变量类型

w       实参和函数参数都要有ref

sealed class ParameterPassing

{

    static void Method(ref int parameter)

    {

        parameter = 42;

    }

    static void Main ()

    {

        int arg = 0;

        Console.Write(arg); //结果为0

        Method(ref arg);

        Console.Write(arg); //结果为42

    }

}

函数参数有ref修饰符时,被称为引用型参数。引用型参数不产生新的存储区间。实际上,引用型参数是函数调用时所传递的实参所代表的变量的别名。结果是引用型参数只是实参所代表的变量的另一个名字。

ref修饰符必须同时出现在函数声明语句和函数调用语句中。

只有被预先赋值的实参才能被传递给引用型参数,例如:

       int arg;    // arg没有被赋初值

       Method(ref arg);//错误,实参必须预先赋初值

传递给引用型参数的实参必须是变量类型,而不能是纯粹的值或常量。

       Method(ref 42);  //错误,引用型参数的实参不能是纯粹的值

       const int arg = 42;

Method(ref arg); //错误,引用型参数的实参不能是常量

5.out型参数

·                    out型参数是实参的一个别名

w        没有发生复制

w        实参不必预先赋值

w        实参必须是变量类型

w        函数参数必须被预先赋值才能使用

w        实参和函数参数都要有out

sealed class ParameterPassing

{

    static void Method(out int parameter)

    {

        parameter = 42;

    }

    static void Main ()

    {

        int arg;

        //Console.Write(arg);

        Method(out arg);

        Console.Write(arg); //结果为42

    }

}

函数参数有out修饰符时,被称为out型参数。out型参数不产生新的存储区间。实际上,out型参数是函数调用时所传递的实参所代表的变量的别名。结果是out型参数只是实参所代表的变量的另一个名字。

out修饰符必须同时出现在函数声明语句和函数调用语句中。

没有被预先赋值的实参能够被传递给引用型参数,例如:

       int arg;    // arg没有被赋初值

       Method(out arg);//正确,实参可以不赋初值

传递给out型参数的实参必须是变量类型,而不能是纯粹的值或常量。

       Method(out 42);  //错误,out型参数的实参不能是纯粹的值

       const int arg = 42;

Method(out arg); //错误,out型参数的实参不能是常量

6.in型参数?

·                    readonly, const in, 都是C# 关键字

w       它们不能被用于函数参数

w       ref/out 型参数总是被赋于写的权力

7.函数重载

·                   一个类中的函数可以有同一个名字,称为重载

w       函数名和参数称为标识

w       标识必须唯一

w       返回值类型不是标识

namespace System

{

    public sealed class Console

    {

        public static void WriteLine()

        { ... }

        public static void WriteLine(int value)

        { ... }

        public static void WriteLine(double value)

        { ... }

        ...

        public static void WriteLine(object value)

        { ... }

        ...

    }

}

C++Java一样,C#允许一个类声明两个以上的同名函数,只要参数的类型或个数不同。这就是重载。但是,一个类不能包含标识为相同的实例函数和静态函数,例如:

              sealed class Illegal

       {

              void Overload() { ... }

              static void Overload() { ... }//错误

       }

C++Java一样,返回值的类型不是标识的一部分,不能被用作重载的标准,例如:

              sealed class AlsoIllegal

       {

              int Random() { ... }

              double Random() { ... }//错误

       }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值