c# 01 参数类型 ref,out,params

 

 

 

1.演示try catch捕获例子:

public static void getNumber()
  {
      while (true)
         {
           try
           {
              Console.WriteLine("请输入一个数字");
              int number = Convert.ToInt32(Console.ReadLine());
              Console.WriteLine("恭喜您输入对了,您输入的数字是:{0}", number);
              break;
           }
           catch
           {
              Console.WriteLine("输入错了,请重新输入,需要输入阿拉伯数字,就是‘0123456789’这样的数字,你明白吗?");
            }
          }
          Console.ReadKey();
  }

2 :ref参数:要求必须要在方法外为其赋值,这样方法内才有修改的意义,如果值都没赋建议使用out类型参数。更新传递到别的方法中的值。方法a中声明定义的一个变量传到方法b中,在经过方法b更新值后,方法a的值也会跟着更新。
变量定义在类中那么就是这个类的属性,不管在任何地方更新这个对象,只要更新完成所有被引用的这个对象都会同步更新。
变量定义在方法中,由于方法不能像类一样被传递,所以从它被传过去的那一刻开始就属于独立的了,不会再被引用了,从此你是你我是我,各不相干,这就是方法要返回值得作用,就是接受被加工后此值得变化。
在C#中ref关键字就比较牛逼了,在不需要定义对象的情况下就能实现变量随时在不同的方法中更新。需要的时候就用,不需要的时不用,很方便。

 

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            string name = "王晓明";
            int age = 28;
            //ref的作用是:被调用方法更新变量值后同步到外层变量上。
            goThailand(ref name, ref age);
            Console.WriteLine("name:{0}\nage:{1}", name, age);
            Console.ReadKey();
            /*
             * 运行结果
             name:杨baby
             age:32
             */
        }

        static void goThailand(ref string name, ref int age)
        {
            name = "杨baby";
            age = 32;
        }
    }
}

 

3.演示out方法的实例:可以接受被调用的方法返回多个不同类型的值,要求out参数必须在方法内赋值:

 

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] sums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int ma, mi, su, av;
            string nam;
            testOutMethod(sums, out ma, out mi, out su, out av, out nam);//变量名没要求
            Console.WriteLine("sums数组计算结果:max:{0},min:{1},sum:{2},avg:{3},name:{4}", ma, mi, su, av, nam);
            Console.ReadKey();
            //打印结果:sums数组计算结果:max:9,min:0,sum:45,avg:5,name:aaaaa
        }

        public static void testOutMethod(int[] sums, out int max, out int min, out int sum, out int avg, out string name)
        {
            max = 0;
            min = 0;
            sum = 0;
            for (int i = 0; i < sums.Length; i++)
            {
                if (sums[i] > max)
                {
                    max = sums[i];
                }
                if (sums[i] < min)
                {
                    min = sums[i];
                }
                sum += sums[i];
            }
            avg = sum / sums.Length;
            name = "aaaaa";
        }

    }
}

 4.params类型:经过params关键字修饰过的数组可以直接传值进去,不再需要专门创建一个数组传进去,缺点是自动按类型识别匹配需要放到最后面让其匹配,和java中的可变参数"..."一样

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            int sum = test("小刚", 1, 2, 3, 4, 5, 6, 7);
            Console.WriteLine("sum:{0}", sum);
            Console.ReadKey();
        }

        static int test(string name, params int[] sums)
        {
            int sum = 0;
            for (int i = 0; i < sums.Length; i++)
            {
                sum += sums[i];
            }
            return sum;
        }
    }
}

 

*string类型转int

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            int result;
            //将string类型转为int类型,如果转成功了返回true并且out参数返回转成功后的值,如果失败则返回false也out参数则返回0;
            bool state = int.TryParse("123", out result);
            Console.WriteLine("state:{0}\nresult{1}", state, result);
            Console.ReadKey();
        }


    }
}

*使用io流在指定路径下创建一个txt文件并且往文件中输入内容

 

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            string content = "写入文本\n中的内容";
            System.IO.File.WriteAllText(@"C:\Users\YanLong.li\Desktop\2bbbbb23.txt", content);//使用流将文件输出并写入进指定的文件夹中
            Console.WriteLine("成功");
            Console.ReadKey();

        }
    }
}

 *保留小数

 

 

posted @ 2020-11-17 14:43  ~~mr.li~~  阅读(106)  评论(0编辑  收藏  举报