1.方法参数,变量的作用域
using System;namespace Day10_1
{class Program{public class Person{//引用参数ref//传的是地址不是值,如果没有赋初值,是没有地址的,ref参数一定是个变量,ref实参一定赋过初值//ref一般加在值类型参数的前面//使用引用参数,形参和实参前面都要加ref关键词//希望引用几个参数,函数内的形参与实参一致//对应的数据类型一般都是值类型//调用函数时,引用参数必须是个变量,必须传一个变量,且变量有初值public void Swap(ref int a, ref int b){int temp = a;a = b;b = temp;}//输出参数out//希望方法输出多个结果 ----------------return只能返回一个结果,out输出参数可以返回多个结果//参数成了一个输出通道,离开方法之前形参必须赋值//实参必须是一个变量,传递的实参一般是值类型//在函数中,输出参数一定要有结果,必须是个变量,必须传一个变量,不需要有初值public void Cal(int a, int b, out int x, out int y){x = a - b;y = a + b;}//数组参数params//不同于传递一个数组//只能使用一次//数组参数只能作为参数列表中的最后一个public void Sum(params int[] a){int result = 0;for (int i = 0; i < a.Length; i++){result += a[i];}Console.WriteLine(result);}//默认值参数//可以有多个,而且放在参数列表的最后public void GetYourGrade(int yourAge = 10, int jumpCount = 0){int x = jumpCount + yourAge;Console.WriteLine(x);}//【练习题】//第1题public void Sort(ref int a, ref int b, ref int c){int max = a;int min = a;if (max < b){b = max;}if (max < c){max = c;}Console.WriteLine("最大值是" + max);}//第2题public void Count(int a, int b, int c, out int area, out int volume){area = (a * b + a * c + b * c) * 2;volume = a * b * c;}//第3题public void Array(params int[] a){for (int i = 0; i < a.Length; i++){if (i==0){Console.Write($"{a[i]}");}else if (i%2==0){Console.Write($"+{a[i]}");}else{Console.Write($"-{a[i]}");}}}}static void Main(string[] args){#region 方法参数//方法参数Person test = new Person();//1.引用参数int score1 = 1; //ref实参必须赋初值int score2 = 2; test.Swap(ref score1,ref score2);Console.WriteLine($"{score1},{score2}");Console.WriteLine("---------------------------------------------------------------------");//2.输出参数int outa = 1; //out实参必须赋初值int outb = 0;test.Cal(1, 2, out outa, out outb);Console.WriteLine($"{outa},{outb}");Console.WriteLine("---------------------------------------------------------------------");//3.数组参数test.Sum(1, 2, 3, 4, 5);Console.WriteLine("---------------------------------------------------------------------");//4.默认值参数test.GetYourGrade(1,2);Console.WriteLine("---------------------------------------------------------------------");//【练习】//1.三个整数a,b,c,求最大值.---------------------------------------练习引用参数int a = 0;int b = 1;int c = 2;test.Sort(ref a,ref b,ref c);Console.WriteLine("---------------------------------------------------------------------");//2.用一个方法同时求长方体的面积和体积-----------------------------练习输出参数 int area = 0;int volume = 0;test.Count(1,2,3,out area,out volume);Console.WriteLine($"{area},{volume}");Console.WriteLine("---------------------------------------------------------------------");//3.输出a[0]-a[1]+a[2]-a[3]...-------------------------------练习数组参数int[] array = new[] {1, 2, 3, 4, 5};test.Array(array);Console.WriteLine("---------------------------------------------------------------------");#endregion#region 变量的作用域//1.全局变量//在类内都可以访问//2.局部变量(临时变量)//只有在当前方法里可以访问,一定要赋初值//如果局部变量和全局变量重名,一律采用(就近原则,局部变量)//如果想要访问全局变量,使用this.方式去访问//内部类,内部枚举,内部结构体 ----------------------------------使用容易出现问题,维护麻烦#endregion#region 数据类型整合//C#中有值类型、引用类型、指针类型三种//1.值类型(枚举类型和结构类型)//枚举类型//结构类型(数值类型、布尔类型、自定义结构类型)//数值类型(decimal,整数类型,浮点类型)//2.引用类型(Object,string,class,interface,委托,数组)//3.指针类型(不安全类型)#endregion}}
}