《第五章》——方法

本文详细介绍了C#中的参数传递方式,包括值参数、引用参数、引用类型作为值参数和引用参数的区别,以及输出参数、参数数组、命名参数和可选参数的使用规则。重点讨论了类型推断中的var关键字,强调了其限制和作用。此外,还解释了在不同参数传递方式下,对引用类型对象的影响和行为差异。

 


类型推断和var 关键字


● 可以使用关键字 var, 来表示任何可以从初始化语句的右边推断出的类型,(类似于C++11 中的auto 语句)。

使用var关键字注意的有:

只能用于本地变量,不能用于数据成员的声明,和成员函数的声明。

只能在变量声明中包含初始化时使用。

一旦编译器推断出变量的类型,它就是固定且不能更改的。

namespace Ch05Ex03
{
    class Program
    {
        public var mydad(int o); //错误
        public var mydd=19; //错误
        static void Main(string[] args)
        {
            var ival = 15;
            ival = 17;
            var jiji; //错误
            WriteLine(ival);
                
            ReadKey();
        }
    }
}

 


●   在C和C++中,可以声明一个本地变量,然后在嵌套块中声明另一个相同名称的本地变量。在内部范围,内部的名称隐藏了外部的名称。

在C#中不管嵌套级别如何,都不能在第一个名称的有效范围内声明另一个同名的本地变量。


值参数


●  使用值参数,通过将实参的值复制到形参的方式把数据传递给方法。 在方法调用时,系统做如下操作:

在栈中为形参分配空间。

将实参的值复制给形参。

●  值参数的实参不一定是变量,也可以是任何能计算成相应数据类型的表达式。

● 注意: 在把变量用作实参之前 ,变量必须被赋值(除非是输出参数),对于引用类型,变量可以设置为一个实际的引用或者null.

●  注意:值类型就是指类型本身包含其值。 值参数是把实参的值复制给形参。

●注意: 如果实参是引用类型的,并且使用值传递,当函数调用时, 引用被复制,结果实参和形参都引用堆中的同一个对象。


引用参数


● 使用引用参数时, 必须在函数的声明中和调用中都使用ref。

● 实参必须是变量,在用作实参前该变量必须被赋值。  如果该实参是引用类型变量, 可以赋值为一个引用 或者 null。

● 对于值传递,系统在栈上为形参分配内存,引用参数具有以下特征:

不会在栈上分配内存

实际情况是,形参的参数名将作为实参变量的别名,指向相同的位置。


引用类型作为值参数和引用参数


● 对于一个引用类型对象,不管是将其作为值参数传递还是作为引用参数传递,我们都可以在方法成员内部修改它的值。

不过它们还是有区别的的:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值