C#笔记[ 二 ]:类, Object类 , static类
Evernote Export
.................................. C#的类 ...................................
类的定义:
访问修饰符[ public/internal ] 类修饰符[ abstract/static/sealed ] class类名
{
字段
字段属性
类的成员 用户创建的方法
方法 构造函数:带参数的构造函数都是为了给类中的变量赋初值,即初始化变量;不用再创建类的实例,一个个赋值,减少代码量
CLR会自动的为类创建一个默认的[无参数无实体]的构造函数;但是只要手动添加了任意类型的构造函数,就不会创建
析构函数
类:嵌套类;使用类成员的访问修饰符;创建嵌套类实例和访问嵌套类成员,都要加上外层类名.嵌套类名
}
字段的定义:
访问修饰符[ public/internal/protected/private ] 字段修饰符(static/readonly/const) 数据类型 字段名;
----------------------------------------------------Being
静态变量: staticint ABC = 123; -- 不用创建类的对象就能访问 [ 也不能用类的对象进行访问],其他变量都是通过类的实例进行操作
常量: constint ABC = 123; -- 常量只能在声明的同时进行初始化,不能定义成 staticconst,因为他本质上就包含 static
----------------------------------------------------End
字段属性的定义:
public 数据类型 属性名
{
get{return xxx;}
set{this.XXX = value;}
}
不让其他程序员修改类中的变量,所以使用字段属性中的 get set 访问器来获取或设置字段的值,C#的
默认是 private,设置成 private 也不会报错,但是对象不能访问,失去了设计的初衷
----------------------------------------------------Being
publicclassStudent
{
publicstringName { get; set; } // 自动属性 [必须同时定义get,set,且不能加限制]
}
publicclassStudent
{
stingname;
publicstingName
{
get{return name;}
set{name = value;}
}
}
----------------------------------------------------End
方法的定义:
访问修饰符[ public/internal/protected/private ] 方法修饰符(abstract/virtual/override/static/sealed) 数据类型[返回值类型]方法名()
{
语句块;
}
构造函数的定义:
访问修饰符类名(参数)
{
}
概念:默认且一般访问类型是 public,没有返回类型,与类同名的方法
作用:初始化类中的变量
访问类型默认是 public,设置成 private 也不会报错,但是无法创建该类的对象
静态构造函数的定义:
类名(参数)
{
}
静态构造函数 和 没有参数的构造函数 是不一样的;静态构造函数属于类,实例构造函数属于对象,所以不会冲突
特点:
1、因为static,属于类;是.Net调用,所以有访问修饰符也没用,所以不能有访问修饰符,不能有参数
2、在创建第一个实例 / 调用任何静态成员之间,.NET会自动调用; 只执行一次
3、一个类只有有一个静态构造函数
classRefClass
{
staticRefClass() // 静态构造函数,没有修饰符,也没有参数
{
}
publicRefClass() // 不带参数的构造函数
{
}
publicvoidab(int a)
{
}
}
.................................. Object类 ...................................
|
Object是所有类的基类,这里指的“所有类”,即不管是 C# 系统所提供的标准类,还是用户自行編写的类
因为是基类,静态方法可以不用加 Object;非静态方法 [ 每一个变量也是各种数据类型类的实例 ]
|
|
|
方法
|
描述
|
|
virtual static bool Equals(object A,object B) [ 静态方法,两个比较的参数 ]
|
string str1 = "";
string str2 = "";
bool boolValue = Equals(str1,str2)
|
|
bool Equals(object A)
[ 非静态方法,一个参数 ]
|
string str1 = "";
string str2 = "";
bool boolValue = str1.Equals(str2);
|
|
Type GetType()
|
string str1 = "";
Console.WriteLine(tr1.GetType().ToString());
// System.Type --> System.Int32,System.String,System.Double
|
|
virtual string ToString()
|
Object是基类,创建一个任意类型的变量都是创建Object子类的对象,所以任何类型都可以转为 String
|
|
|
==
|
Object.Equals()
|
Object.Equals( ) 静态方法
|
|
|
|
三个都一样,值类型 ==> 比较值是否相等, 引用类型 ==> 比较是否是同一个对象
“==”在不重写的情况下与 “Object.Equals( )”没有区别
|
|
||
|
值类型
|
比较值
|
比较值
|
比较值
|
|
|
引用类型
|
比较是否是同一个对象
|
比较是否是同一个对象
|
|
|
|
string类型
|
string类型也是引用类型
但是重写了 [ 比较值 ]
|
string类型也是引用类型
但是重写了 [ 比较值 ]
|
string类型也是引用类型
但是重写了 [ 比较值 ]
|
字符串的 "=="和 "Equals"都被重写了,用来比较值
|
|
object类型
|
比较是否是同一个对象
|
不会调用自身的 Equals()
|
|
|
.................................. static 静态类 ...................................
|
静态类:
|
静态类是不能被实例化的密封类,描述的是类本身,只包含静态成员[ 静态字段,静态方法,静态构造函数 ]
|
|
|
静态成员
|
实例成员属于对象 [ 创建对象调用 ] ,静态成员属于类 [ 类直接调用 ];静态成员属于类,不用创建对象就可以访问
实例成员没有对象引用就会释放,静态成员只有程序结束时才会释放
|
|
|
静态方法
|
静态方法不能包含实例字段,只能使用静态字段
|
当类被第一次加载时,所有的静态成员都会加载,
此时类的对象还没有被创建;所以this,base也不能使用
|
|
静态构造函数
|
在创建第一个实例 / 调用任何静态成员之前,CLR会调用来初始化类; 只执行一次
静态构造函数必须无访问修饰符,无参数[因为是初始化类,所以你加任何修饰符和参数都是没有意义的]
|
|
作者:大李子
邮箱:1185241994@qq.com
本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利

浙公网安备 33010602011771号