class Program { static void Main(string[] args) { Myout myout = new Myout(); double d; int valueA ; int valueB ; //要传入返回的out参数不需要初始化 int value = myout.Value(out valueA, out valueB);//调用方法 Console.WriteLine("方法返回值=" + value + "out输出参数A=" + valueA + "out输出参数B=" + valueB); //打印10,20,30 Console.WriteLine(double.TryParse("ABC", out d)); Console.WriteLine(double.TryParse("25.21", out d)); Console.WriteLine(d);//打印25.21 //out参数在TryParse的用法 Console.ReadKey(); Person pertwo = new Person() { Name = "我是二号" }; Console.WriteLine(pertwo.Name); Myref myref =new Myref(){per =new Person(){Name ="你已经被我改成三号"}}; int a = 300; //int变量默认值为300 myref.MyrefSet(ref a, ref pertwo);//和out一样调用方法传入对象必须加上ref修饰符 Console.WriteLine ("修改后的a=" + a + "我是二号??" + pertwo.Name); //调用方法后传入的值就会被修改,因为是按引用传递的。 Console.ReadKey(); } } /// <summary> /// 用out修饰符修饰的方法参数是输出参数,方法除返回值外还要返回带out修饰符的参数值 /// </summary> public class Myout { /// <summary> /// 输出参数A,输出参数B /// </summary> /// <param name="valueA"></param> /// <param name="valueB"></param> /// <returns></returns> public int Value(out int valueA, out int valueB) { int value = 10; valueA = value + 10; valueB = value + 20; //out参数必须在方法返回之前设置要输出的返回值 return value; } } /// <summary> /// 用ref修饰符的方法参数是按引用传递的方法参数 /// 值类型和引用类型不重要,重要的是传入的参数都在方法内部更改 /// </summary> public class Myref { public Person per { get; set; } public void MyrefSet(ref int value,ref Person person) { int a = value; a = 100 * 3; value = a*300; person = per; } } public class Person { public string Name{get;set;} }