zoukankan      html  css  js  c++  java
  • 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}
    age:{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}
    result{1}", state, result);
                Console.ReadKey();
            }
    
    
        }
    }

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

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

     *保留小数

  • 相关阅读:
    79月知识小结
    将网页上word、pdf、txt文件下载下来,解析成文本内容
    vs 配色方案
    sql时间函数
    关于全角转半角的方法
    多线程与UI操作
    委托调用、子线程程调用、与线程池调用
    算法插入排序
    字符串在某字段里时,如何写搜索的SQL语句
    理解constructor属性
  • 原文地址:https://www.cnblogs.com/li-yan-long/p/13994103.html
Copyright © 2011-2022 走看看