c#两大数据类型:值类型(struct)与引用类型(class),在实际的c#编程中应用广泛。
本文通过具体的实例,为大家介绍c#中值类型(变量)与数值类型(变量)的区别。
1、首先来看值类型作为参数
当使用值向方法传递参数时,编译程序将实参的值做一份拷贝,并将此拷贝传递给该方法。
被调用的方法不会修改内存中实参的值。使用值参数时,可以保证实际值是安全的。
在调用方法时,如果形式化参数的类型是值参数的话,调用的实参的值必须保证是正确的值表达式。
以下的示例,并未实现交换值的目的:
输出:
i=1,j=2
2、引用类型作为参数
引用型参数并不开辟新的内存区域。
使用引用型参数向方法传递形参时,编译程序将把实际值在内存中的地址传递给方法。
在方法中,引用型参数通常已经初始化。
例如,下面这个例子:
输出:
i=2,j=1
Main函数中调用了Swap函数,x代表i,y代表j,成功实现了i和j的值交换。
注意:在方法中使用引用型参数,可能导致多个变量名指向同一处内存地址的情况发生。
如下面这个例子:
在方法G对F调用时,s的引用被同时传递给了a和b。此时,s,a,b同时指向了同一块内存区域,显然这并不是我们所期望看到的。
通过以上三个例子,我想你已经对C#值类型与引用类型的区别有所理解,祝您学习愉快。