属性
访问修饰符:用来确定属性的可用范围
public:不限制对该属性的访问
protected:只能从其所在类和所在的子类(派生类)进行访问
internal:只有其所在类才能访问
private:私有访问修饰符,自能在其声明类中使用
get访问器与方法体相类似,它必须返回属性类型的值;
而set访问器类似于返回类型为void的方法,它使用称为value的隐式参数,此参数的类型是属性类型
namespace ConsoleApp1
{
class MyClass
{
private string id = ""; //定义变量,用来记录用户编号
private string name = ""; //定义变量,用来记录用户姓名
public string ID //定义用户编号属性,该属性为可读可写属性
{
get
{
return id;
}
set
{
id = value;
}
}
public string Name //定义用户姓名属性,为可读可写属性
{
get
{
return name;
}
set
{
name = value;
}
}
}
class Program
{
static void Main()
{
MyClass myclass = new MyClass();
myclass.ID = "A001";
myclass.Name = "TM1";
Console.WriteLine(myclass.ID + " " + myclass.Name);
}
}
}
方法
方法声明可以包含一组特性和private、public、protected、internal 4个访问修饰符的任何一个有效组合,还可以包含new、static、virtual、override、sealed、abstract以及extern等修饰符
该声明最多包含下列修饰符中的一个:static、virtual和override
该声明最多包含下列修饰符中的一个:new,override
如果该声明包含abstract,则不能包含:static、virtual、sealed、extern
如果包含private,则不能包含virtual、override、abstract
如果包含sealed,还该包含override
对于abstract和extern方法,方法主体智能包含一个分号
方法的参数类型
传给方法的值叫实参,在方法内部
接收实参的变量叫形参,形参在紧跟着方法名的括号中声明,形参只在括号内有效
1、params参数
paramas参数用来指定在参数数目可变时蚕蛹的方法参数,params参数必须是一维数组
namespace ConsoleApp1
{
class program
{
static void UseParams(params string[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.WriteLine(list[i]);
}
}
static void Main()
{
string[] strName = new string[5] { "一", "二", "三", "四", "五" };
UseParams(strName);
}
}
}
2、ref参数
ref参数使用发发参数按引用传递,其效果是:当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反应在该变量中,如果要使用ref参数,则方法声明和调用方法都必须显式使用ref关键字。
namespace ConsoleApp1
{
class program
{
public static void Method(ref int i)
{
i = 44;
}
public static void Main()
{
int val = 0;
Method(ref val);
Console.WriteLine(val);
}
}
}
3、out参数
out关键字用来定义输出参数,它会导致参数通过引用来传递,这与ref关键字类似,不同之处子啊与ref要求变量必须在传递之前进行初始化,而out关键字定义的参数,不用进行初始化即可使用。
如果要使用out参数,则方法声明和调用方法都必须显式使用out关键字。
namespace ConsoleApp1
{
class program
{
public static void Method(out int i)
{
i = 44;
}
public static void Main()
{
int value;
Method(out value);
Console.WriteLine("输出参数:" + value);
}
}
}
输出参数:44
方法的分类
1、静态方法
不对特定实例进行操作,调用时,需要直接使用类名进行调用
namespace ConsoleApp1
{
class program
{
public static int Add(int x, int y)
{
return x + y;
}
static void Main()
{
Console.WriteLine("结果为:" + program.Add(2, 3));
}
}
}
非静态方法
非静态方法是对类的某个给定的实例进行操作,调用时,需要使用类的实例(对象)进行调用
namespace ConsoleApp1
{
class Program
{
public int Add(int x, int y)
{
return x + y;
}
static void Main()
{
Program program = new Program();
Console.WriteLine("结果为:" + program.Add(3,5));
}
}
}
何时用静态方法,何时用实例方法:
1.一个方法和他所在类的实例对象无关,不依赖new出来的实例,那么它就应该是静态的
2.不需要面向对象的理念的时候用静态;比如动物-> RUN ,因为你可能会扩展出猫 run、狗 run,这时候就需要用非静态的方法
方法的重载
方法重载时指方法名相同,但参数的数据类型、个数或顺序不同的方法。只要类中有两个以上的同名方法,但是使用的参数类型、个数或顺序不同,调用时编译器即可判断在那种情况下调用哪种方法。