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;}
    }