【属性】
属性是一种访问类或对象特性的成员。
语法:
private 数据类型 变量名;
public 数据类型 属性名
{
get{ return 变量名 ;}
set
{
变量名 = value;
}
}
class student
{
private int age;
public int Age
{
get { return age; }
set
{
if(value>0&&value<100)
{
age = value;
}
else
{
age = 18;
}
}
}
}
class Program
{
static void Main(string[] args)
{
student stu = new student();
stu.Age = 12;
Console.WriteLine(stu.Age);
Console.ReadLine();
}
}
【方法】
方法就是类的行为,便于修改,增加可读性,可重用,封装…
1.方法的声明
语法:
访问修饰符 返回类型 方法名(参数列表)
{
方法的主体...
}
访问修饰符:public、private…
返回类型:int、string、void(无返回值)…
参数列表:如果没有可以省略,多个参数之间用逗号隔开
public int Show()
{
Console.WriteLine(Age);
return age; //返回与int类型一致的值
}
2.方法的参数类型
1)params参数
参数个数不确定的情况,就可以使用params参数。
private int Add(params int[] x)
{
}
Program pro = new Program();
pro.Add(20);
pro.Add(20,3,40,50,60);
说明:
1.只能在一维数组上使用params参数;
2.不允许使用ref或者out修饰params参数;
3.一个方法最多只能有一个params参数。
2)ref参数
使方法参数按引用传递
class Program
{
//交换两个数的方法
static void Swap(int num1,int num2)
{
int temp = num1;
num1 = num2;
num2 = temp;
}
static void Main(string[] args)
{
int num1 = 40, num2 = 50;
Console.WriteLine("交换前两个数的位置为:{0}和{1}" ,num1 ,num2);
Swap(num1, num2);//交换两个数的位置
Console.WriteLine("交换后两个数的位置为:{0}和{1}", num1, num2);
Console.ReadLine();
}
}
因为int类型的参数是按值传递的,对形参的修改并不会影响到实参。
class Program
{
//交换两个数的方法
static void Swap(ref int num1,ref int num2)
{
int temp = num1;
num1 = num2;
num2 = temp;
}
static void Main(string[] args)
{
int num1 = 40, num2 = 50;
Console.WriteLine("交换前两个数的位置为:{0}和{1}" ,num1 ,num2);
Swap(ref num1,ref num2);//交换两个数的位置
Console.WriteLine("交换后两个数的位置为:{0}和{1}", num1, num2);
Console.ReadLine();
}
}
在形参前加上ref参数,作用是将形参按引用类型传递。
3)out参数
用于定义输出参数,会使参数通过引用传递。这与ref参数相似,不同的是ref参数要求变量必须在传递之前初始化,out关键字定义的参数不用进行初始化即可使用。可以返回多个值。
class Program
{
public static void Method(out int i)//可以继续加参数
{
i = 40;//继续给变量赋值
}
static void Main(string[] args)
{
int value;
Method(out value);
Console.WriteLine("输出参数:" + value);//可以输出更多值
Console.ReadLine();
}
}
3.方法的重载
是指方法名相同,但参数的数据类型,数据个数和顺序不同的方法。
//数据类型不同
public static int sum(int a,int b)
{
return a + b;
}
public static double sum(double a, double b)
{
return a + b;
}
//数据个数不同
public static int sum(int a, int b,int c)
{
return a + b+c;
}