C#笔记④——参数
一、传值参数(默认参数)
在传参时,就创建副本了

二、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;
}
}
传值参数在栈中地址不同,因为它会创建新副本
ref与out都会是同一位置
四、具名参数
(形参名:xx,形参名:xx)
优点:
- 提高可读性
- 不受顺序限制
五、数组参数(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);
}
七、可选参数
在声明时设形参的默认值

浙公网安备 33010602011771号