值类型和引用类型:
值类型在作为参数传递到方法体内,只是复制了一个副本而已,所以,原来的值是不会改变的,方法调用后生命周期就会消失,但是,引用类型就不一样了,它传递的是一个引用,一个指向同一个对象的引用地址,所以,对象的值会改变,只不过就是两个引用指向同一个对象,所以这两种类型在传递参数的时候是不一样的,如果想让值类型在传递的过程中,值也会改变,那么就必须把值类型当做引用类型来传递,即在方法中加入ref关键字来修饰参数,比如
static void Main(string[] args)
{
int a = 33;
Getaa(ref a);
Console.Write(a);
}
public static void Getaa(ref int aa)
{
aa = 100;
Console.Write(aa);
}
这个时候a的值就会改变成100;
还有另外一个修饰符out,这个主要是用来输出的,确切的说ref和out传递的都是地址,但是唯一的区别就是ref重点的将值传入到方法内,而out则注重于输出,不用初始化,看看下面的例子就明白了
using System;
namespace ParameterOutSample3_4
{
class AddClass
{
public static void Add(int x, int y, out int z)
{
z = x + y;
}
}
class MyClass
{
public static void Main()
{
int a = 13, b = 19, c; //c未初始化
AddClass.Add(a, b, out c);
Console.WriteLine("a+b={0}", c);
}
}
}
|