----------类、类中成员
寂寂寂寂寂蝶丶
这个作者很懒,什么都没留下…
展开
-
C#中this的用法
借鉴自:https://www.jb51.net/article/67204.htmthis用来区分重名的数据成员和形参当类中函数的数据成员和函数的形参重名的时候,可以使用this来区分 public class User { public int ID { get; set; } public string UserName { get; set; } public User(int UserID, string UserN原创 2020-05-30 17:24:54 · 1770 阅读 · 0 评论 -
析构函数、dispose模式
析构函数书写规则在C#3.0发布之前,析构函数有时也叫终结器(finalizer)(1)每个类只能有一个析构函数(2)析构函数不能有参数(3)析构函数不能有访问修饰符(4)析构函数名称与类名相同,但要在前面加一个~(5)析构函数只能作用与类的实例,因此没有静态析构函数(6)不能在代码中显式调用析构函数,相反,当垃圾回收器分析代码并认为代码中不存在指向该对象的可能路径时,系统会在垃圾...原创 2019-11-22 16:00:41 · 502 阅读 · 0 评论 -
using static简化静态成员的使用
对于使用static修饰的静态类,我们可以通过类.来访问此静态类中的成员,在C#6新增特性中,我们可以使用using static这种新语法来简化对于静态类中数据的使用。通常情况下,我们使用静态类Console的静态方法WriteLine输出如下代码。using System;namespace lianxi{ public class Program { ...原创 2019-11-19 14:35:37 · 590 阅读 · 0 评论 -
扩展方法(static静态类中静态函数的参数使用this修饰)
在迄今为止的内容中,每个方法都和声明它的类关联,扩展方法特性扩展了这个边界,允许编写的方法和声明它的类之外的类关联 class MyData { private double D1; private double D2; private double D3; public MyData(double d1,doub...原创 2019-11-01 16:02:56 · 1250 阅读 · 0 评论 -
抽象成员 抽象类(abstract)、密封类(sealed)
抽象成员(类似C++中的纯虚函数)抽象成员是指设计为被覆写的函数成员,抽象成员只能在抽象类中声明,它有以下特征:(1)必须是一个函数成员,也就是说,字段和常量不能为抽象成员(2)必须用abstract修饰符标记(3)不能有实现代码块,抽象成员的代码用分号表示(4)尽管抽象成员必须在派生类中用相应的成员覆写,但不能把virtual修饰符加到abstract修饰符(5)类似虚成员,派生类...原创 2019-11-01 15:20:05 · 770 阅读 · 1 评论 -
成员访问修饰符(public、private、protected、internal、protected internal)
与C++相同,成员的可访问性描述了类成员的可见性,在类中必须对每个成员指定访问级别,如果不指定某个成员的访问级别,它的隐式访问级别为private,成员不能比它的类有更高的可访问性,也就是说,如果一个类的可访问性限于它所在的程序集,那么类的成员个体也不能从程序集的外部看到,无论它们的访问修饰符是什么,public也不例外。public(公有成员的可访问性)private(私有成员的可访...原创 2019-11-01 12:26:41 · 745 阅读 · 0 评论 -
类的访问修饰符(public、internal)、跨程序集之间的继承
public与internal在C#中类是由访问级别的,类的可访问性有俩个级别:public、internal标记为public的类可以被系统内任何程序集中的代码访问,要使一个类对其他程序集可见,使用public访问修饰符标记为internal的类只能被它自己所在的程序集内的类看到,internal是默认的类访问级别,也可以显式地声明一个类为内部的。跨程序集之间的继承使用条...原创 2019-11-01 12:03:45 · 1135 阅读 · 0 评论 -
构造对象的流程顺序、构造函数的初始化语句(base、this)
创建子对象时构造的顺序与C++相同,子类创建对象时,要创建对象的基类部分,所以需要在子类的构造函数中隐式调用父类的某个构造函数作为创建实例过程的一部分,继承层次链中的每个类在执行它自己的构造函数体之前先执行它的父类构造函数。C#中构造顺序与C++有些不同,C#首先会初始化本类中的成员,然后如果这个类有父类则再初始化父类中的成员,然后调用父类的构造函数,最后再执行本类的构造函数,多层次继...原创 2019-11-01 11:10:32 · 297 阅读 · 0 评论 -
类的继承与派生(virtual、override)
C#中类的继承与派生在性质上类似C++,但在有些方面有一些区别。C#中所有类都派生自object类除了特殊的类object,所有的类都是派生类,即使他们没有基类规格说明,类object是唯一的非派生类,因为他是继承层次结构的基础,与C++不同(C++中允许多继承),在C#中一个类声明的基类规格说明中只能有一个单独的类,也就是只允许单继承,虽然类只能直接继承一个基类,但继承的层次没有限制。在...原创 2019-10-31 18:47:27 · 413 阅读 · 0 评论 -
访问器的访问修饰符、访问器级别层次
在默认情况下,成员的俩个访问器有和成员自身相同的访问级别,也就是说,如果一个属性有public访问级别,那么它的俩个访问器有和成员自身相同的访问级别,对索引也一样,当然也可以为俩个访问器分配不同的访问级别。访问器的访问修饰符的限制(1)仅当成员(属性或者索引器)既有get访问器也有set访问器时,其访问器才能有访问修饰符(2)虽然俩个访问器都必须出现,但它们中只能有一个有访问修饰符(3...原创 2019-10-31 16:12:38 · 295 阅读 · 0 评论 -
索引器
索引器(indexer)允许一个对象可以像数组一样被索引,当为类定义一个索引器时,该类的行为就会像一个虚拟数组一样,可以使用数组访问运算符[ ]来访问该类的实例,索引器是一组get和set访问器,与属性类似。索引器与属性的异同(1)和属性一样,索引器不用分配内存来存储(2)索引器和属性都主要被用来访问其他数据成员,它们与这些成员关联,并为它们提供获取和设置访问,只是属性通常表示单独的数据...原创 2019-10-31 15:56:11 · 264 阅读 · 0 评论 -
构造函数、static静态构造函数(C#特有)、对象初始化语句(C#特有)
C#中的构造函数与C++中类似,如果希望能从类的外部创建类的实例,需要将构造函数声明为public,如果类的声明中没有显式的提供实例构造函数,那么编译器会提供一个隐式的默认构造函数,它没有参数,方法体为空,如果你为类声明了任何构造函数,那么编译器将不会为该类定义默认构造函数,这时如果不主动声明默认构造函数的话,当在使用不带参数的构造函数创建新的实例时,则会出错。静态构造函数(C...原创 2019-10-31 11:40:25 · 537 阅读 · 0 评论 -
属性、属性的=>写法
属性是代表类的实例或类中的一个数据项成员,使用属性看起来像写入或读取一个字段,属性是指定的一组俩个匹配的、称为访问器的方法,set访问器为属性赋值,get访问器从属性获取值。并且,除了这俩个访问器外,在属性上不允许有其他方法。属性与字段的区别(1)属性是一个函数成员,允许处理输入和输出,而字段不行(2)它不为数据存储分配内存(3)它执行代码(4)属性可以只读或只写,字段则不行(5)...原创 2019-10-31 10:24:26 · 782 阅读 · 0 评论 -
类中static、const、readonly、partial修饰符
static修饰类成员:static在C#中的用法与C++类似,当声明一个类成员为静态时,意味着无论有多少个类的对象被创建,只会有一个静态成员的副本,static变量可在成员函数或类的定义外部进行初始化,也可以在类内部定义初始化静态变量,被static修饰的函数也称静态函数,静态函数成员可以访问其他静态成员,但不能访问实例成员,我们可以从类的外部访问静态成员,但在访问时,C#和C++在访问时...原创 2019-10-30 17:59:01 · 789 阅读 · 0 评论