类是面向对象编程的3个主要特征(封装、继承、多态性)的基础。
C#类 用class定义,用new实例化
类结构
- 字段Field
- 属性property
- 方法Method
【声明一个student类】
class student
{
public string FirstName;
public string LastName;
public string City = "Shanghai";
}
【实例化一个student类】
student xiaoming=new student();
student zhangsan;
zhangsan = new student();
xiaoming.FistName = "Ming";
xiaoming.LastName = "Xiao";
Console.WriteLine("{0}{1};{2}",xiaoming.LastName,xiaoming.FirstName,xiaoming.City);
Console.ReadKey();
属性、字段 => 编码设计规范
_FirstName, _firstName, m_FistName //(推荐第一种写法)
C#没有全局变量或全局函数,C#有字段和方法;
C#静态字段不属于实例,从属于类;因此设置和获取静态字段的值要使用类名。
【封装】【创建student 私有成员PhoneNum】
private string PhoneNum="18800000000"; //默认private
public string GetPhoneNum()
{
return PhoneNum;
}
【字段标记为私有,提供取值和赋值方法来访问和修改数据】
class student
{
private string _FirstName;
private string _LastName;
private string _City = "Shanghai";
private string _PhoneNum="18800000000"; //默认private
public string GetPhoneNum()
{
return _PhoneNum;
}
public string FirstName
{
get { return _FirstName; }
set { _FirstName = value; }
}
public string LastName
{
get { return _LastName; }
set { _LastName = value; }
}
public string City
{
get { return _City; }
set { _City=value; }
}
class Program
{
static void Main(string[] args)
{
student xiaoming =new student();
xiaoming.FirstName = "Ming";
xiaoming.LastName = "Xiao";
Console.WriteLine("{0} {1};{2}",xiaoming.LastName,xiaoming.FirstName,xiaoming.City);
Console.WriteLine("{0}", xiaoming.GetPhoneNum());
Console.ReadKey();
}
}
==================================================
C#3.0开始 声明属性 可简写 如public string Title{get; set}
C#6.0 可直接初始化属性值,如public string Title{get; set}=“Not English”;
【定义构造器】实现创建对象时指定必须的数据。构造器是没有返回类型的方法,且方法名完全和类名相同。
关键代码
public student(string fisrtName,string lastName)
{
_FirstName = fisrtName;
_LastName = lastName;
}
static void Main(string[] args)
{
student xiaoming = new student("Si", "Li") {PhoneNum="13188888888"};//C#3.0 初始化构造器可直接初始化所有可访问的字段和属性。
Console.WriteLine("{0} {1};{2}",xiaoming.LastName,xiaoming.FirstName,xiaoming.City);
Console.WriteLine("{0}", xiaoming.PhoneNum);
Console.ReadKey();
}
集合初始化器| 构造器重载
构造器链
修饰符:
const修饰符:常量
readonly修饰符,只能用于字段,不能用于变量;它指出字段值只能从构造器中更改,或者声明时通过初始化器修改;
=======================================================
【构造函数】主要用于创建类的实例对象。创建对象实例时,构造函数会为对象分配内存空间,并初始化类的成员。
1、实例构造函数,支持方法重载;实例构造函数必须和类同名,不允许有返回类型;
2、静态构造函数,用于初始化类中的静态成员。只执行一次。
【析构函数】
【索引器】用于类包含数组成员时使用
========================================================
类与结构体区别
类是引用类型,结构体是值类型