C#笔记④——参数

一、传值参数(默认参数)

在传参时,就创建副本了
image


二、ref引用参数

形参变,实参也变,一起变
参数类型前加ref,且在引入前必须对变量初始化。


三、out输出参数

实参无需初始化

调用TryParse,返回bool类型值,与out的值
        static void Main(string[] args)
        {
            double result=0;
            double x;
            string str1=Console.ReadLine();
            bool b=double.TryParse(str1,out x);
            if(b)
            {
                result=x;
                System.Console.WriteLine(result);
            }
            else
            {
                System.Console.WriteLine("Error!");
            }
            Console.ReadLine();
        }

解析TryParse
        static void Main(string[] args)
        {
            string str1=Console.ReadLine();
            double x;
            if(Meth(str1,out x))
            {
                System.Console.WriteLine(x);
            }
            else
            {
                System.Console.WriteLine(x);
                System.Console.WriteLine("Error");
            }
            Console.ReadLine();
        }

        public static bool Meth(string str,out double x)
        {
           x=0;
           try
           {
              x=double. Parse(str);
              return true;
           }
           catch
           {
               return false;
           }
        }

out创建新对象
    class Program
    {
        static void Main(string[] args)
        {
            Student stu;
            CreateStudent.createStudent(name:"Tom",age:25,out stu);
            System.Console.WriteLine("{0},{1}",stu.Name,stu.Age);
        }
    }  

    class Student
    {
        public string Name;
        public int Age;
    }

    class CreateStudent
    {
        public static void createStudent(string name,int age,out Student stu)
        {
            stu=null;
            if(age<20||age>100)
            {
                return;
            }
            if(string.IsNullOrEmpty(name))
            {
                return;
            }
            stu=new Student();
            stu.Age=age;
            stu.Name=name;
        }
    }

传值参数在栈中地址不同,因为它会创建新副本
refout都会是同一位置

四、具名参数

(形参名:xx,形参名:xx)
优点:

  1. 提高可读性
  2. 不受顺序限制

五、数组参数(params)

使用params数组参数时候,一定只能有一个,且要放在最后的形参中。

普通数组
    class Program
    {
        static void Main(string[] args)
        {
            List<double> x=new List<double>{7,8,9};
            double cc=Meth(x);
            System.Console.WriteLine(cc);
        }

        public static double Meth(List<double> x)
        {
            double result=0;
            foreach (var i in x)
            {
                result+=i;
            }
            return result;
        }
    }

params一维数组
    class Program
    {
        static void Main(string[] args)
        {
            int cc=Meth(7,8,9);
            System.Console.WriteLine(cc);
        }

        public static int Meth(params int[] x)
        {
            int result=0;
            foreach (var i in x)
            {
                result+=i;
            }
            return result;
        }
    }
字符串
        static void Main(string[] args)
        {
            string str="Mr.boss;Tim;T@om";
            string[] str2=str.Split(';','@');
            foreach(var i in str2)
            {
                System.Console.WriteLine(i);
            }
        }

六、扩展方法(this方法)

必须是个静态类(SomeTypeExtension),静态方法 ,必须形参第一个

点击查看代码
    class Program
    {
        static void Main(string[] args)
        {
            double x=3.1415926;
            double y=x.Round(4);
            System.Console.WriteLine(y);
        }

    }

    static class DoubleExtension
    {
        public static double Round(this double x,int y)
        {
            double result=0;
            try
            {
                result=Math.Round(x,y);
                return result;
            }
            catch
            {
                return result;
            }
        }
    }

基于using System.Linq;的集合比较

普通的
        static void Main(string[] args)
        {
            List<double> x=new List<double>(){50,20,20};
            bool b=Compr(x);
            System.Console.WriteLine(b);
        }

        static public bool Compr(List<double> x)
        {
           foreach (var i in x)
           {
               if(i<=10)
               {
                   return false;
               }
           }
           return true;
        }
Linq
        static void Main(string[] args)
        {
            List<double> x=new List<double>(){50,20,20};
            bool b=x.All(i=>i>10);
            System.Console.WriteLine(b);
        }

七、可选参数

在声明时设形参的默认值

posted @ 2022-02-04 16:35  Ariaaaaa  阅读(6)  评论(0)    收藏  举报