理解C#的Ref和Out关键字2011-06-23类型介绍在几乎所有的OOP语言中,都存在2种类型的值。值类型 引用类型以C#为例:其值类型为sbyte,byte,char,short,ushort,int,uint,long和ulong,float和double,当然还有decimal和bool。而引用类型则是string和object。我想说的我想说的就是——Ref和Out把我弄糊涂的原因是,当时没有认真的去分析它对不同类型所做出的不同的动作。对于值类型。使用了Ref和Out的效果就几乎和C中使用了指针变量一样。它能够让你直接对原数进行操作,而不是对那个原数的Copy进行操作。举个小例子:using System; namespace ConsoleApplication4 { /// /// Class1 的摘要说明。 /// class Class1 { /// /// 应用程序的主入口点。 /// [STAThread] static void Main(string[] args) { int a = 5; int b; squareRef(ref a); squareOut(out b); Console.WriteLine("The a in the Main is: " + a); Console.WriteLine("The b in the Main is: " + b); } static void squareRef(ref int x) { x = x * x; Console.WriteLine("The x in the squareRef is: " + x); } static void squareOut(out int y) { y = 10; y = y * y; Console.WriteLine("The y in the squareOut is: " + y); } } }显示的结果就是——25 100 25 100。这样的话,就达到了和C中的指针变量一样的作用。