![](https://img-blog.csdnimg.cn/24c567543fc74aabaa2ce0d48b45d8e0.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
面向对象
i++
詹姆士x
这个作者很懒,什么都没留下…
展开
-
c#入门-位组合枚举
你可能见到这种形式的绑定,所有枚举都以二进制下,只有一位是1的绑定方式。原创 2023-01-19 02:13:56 · 327 阅读 · 0 评论 -
c#入门-objtct的方法
c#中的类都继承自object类,包括静态类。静态类只是无法手动指定继承类型,而声明静态类时的关键字class,已经让他派生自object类了。结构类型继承自ValueType类,而ValueType继承自object类。数组继承自Array类,Ayyar类继承自object类。c#中几乎所有类型都继承自object类。大多数没有继承object类型的类都是作为变量时声明的类型,例如接口,例如泛型占位符。这些类型都是使用特殊手段翻定义才翻出来他们的根本没有到object的继承关系。原创 2023-01-03 00:48:48 · 665 阅读 · 0 评论 -
c#入门-自定义类型转换
可以为一个类自定义到其他类型的转换方式。被转换类型和目标类型其中至少有一个是声明类的类型。不能定义到自己继承链上的其他类型的转换。## 显式类型转换显式转换使用explicit operator,返回类型置于参数前。返回类型和参数至少有一个是自己。原创 2023-01-02 20:08:27 · 492 阅读 · 0 评论 -
c#入门-接口的抽象成员和虚成员
接口的成员如果不指定主体,那么就是抽象成员。你可以主动为他们加抽象修饰符,不过没什么用。原创 2022-12-16 07:46:36 · 506 阅读 · 0 评论 -
c#入门-接口显式实现
接口的显式实现主要解决两个问题。原创 2022-12-16 07:13:27 · 482 阅读 · 0 评论 -
c#入门-抽象类
有些类存在的意义就是为了让别的类继承。自己本身不应该具有实例。例如你在背包里见到皮卡丘,很正常。你在背包里见到喷火龙,也觉得很正常。但你要是在背包里看到一个叫宠物的东西,会想这是嘛玩意。这里的宠物类就是仅为其他类提供继承上的支持。可以使用abstract把他声明为抽象类。抽象类仍然存在构造器,可以供派生类访问。但抽象类的构造器不能配合new来构造他的类型。即使是在自己的类里面。因为抽象类必须通过继承来实现功能,所以抽象类不能声明为密封类。原创 2022-12-13 02:40:01 · 354 阅读 · 0 评论 -
c#入门-访问基类成员
在构建派生类前,会首先构建出完整的基类。,也会存在。因此才能保证派生类能完全地当作基类来使用。因此,在执行派生类的构造器前,首先需要先调用基类的构造器。而如果基类没有,或是无权访问他的,那么你就需要显式地声明派生类构造器,并指明如何调用基类构造器。显式调用基类构造器地语法是,把调用自己构造器的语法中的this改成base。关键字base即指代直接基类。原创 2022-12-13 02:39:12 · 830 阅读 · 0 评论 -
c#入门-密封
对类型使用sealed修饰,可以阻止别的类型从此类派生(不允许继承)原创 2022-12-13 02:37:04 · 110 阅读 · 0 评论 -
c#入门-静态引用,扩展方法
引用命名空间时,可以在using后面加static修饰符。然后把要引用的命名空间改为带命名空间的一个具体的类。这称为静态引用。原创 2022-12-12 03:21:46 · 926 阅读 · 0 评论 -
c#入门-枚举转数字和字符串
在声明枚举时可以指定要使用哪种整数类型进行绑定。使用一个冒号+类型说明在声明枚举值的时候可以进行赋值,使用你绑定的整数类型。enum 属性 : uint {一般 = 10 , 格斗 = 5 , 飞行 , 毒 , 地面 , 岩石 , 虫 , 幽灵 , 钢 , 火 , 水 , 草 , 电 , 超能力 , 冰 , 龙 , 恶 , 妖精 }尽管不建议,但枚举值的绑定数字可以重复。未赋值的标识符绑定的数字总是上一个数字的值+1。原创 2022-12-12 03:08:02 · 2744 阅读 · 0 评论 -
c#入门-对象初始化器
在使用构造器后,如果紧接着需要对其的字段或属性进行赋值,这称为初始化操作。初始化操作可以使用大括号接在构造器后,用来醒目提示这是一个初始化操作。使用对象初始化器时,每个字段或属性只能进行一次赋值。每个赋值使用逗号隔开,赋值时只需要写属性或字段的名字,不需要写你对这个对象的变量名。如果此构造器是无参构造器,那么还可以省略构造器的小括号。原创 2022-12-11 23:21:32 · 2336 阅读 · 0 评论 -
c#入门-装箱
如果把值类型用于给引用类型赋值,,然后把这个值的地址传回来给引用类型赋值,但是之后如果再把这个引用类型赋值给其他引用类型,那么不会复制内容,只会直接复制地址。原创 2022-12-11 22:41:44 · 874 阅读 · 0 评论 -
c#入门-只读结构
结构一般用于储存轻量的数据,只会较少地修改成员。在复制内容的成本低于地址解析时会有更好的性能。结构中,可以为实例方法或实例属性添加readonly修饰符。在此修饰的方法或属性中,会所有字段都是只读的。原创 2022-12-11 22:21:07 · 356 阅读 · 0 评论 -
c#入门-引用变量
引用传递,是c#为了以更为安全的方式代替指针做出来的产物。类似引用类型储存一个地址。但和引用类型不同的是,连对他本身的访问和修改都会转为对原值的访问和修改。原创 2022-12-11 22:17:53 · 1672 阅读 · 0 评论 -
c#入门-索引器
索引器类似属性,必须存在访问器。但索引器没有名字,而且索引器有参数。原创 2022-12-11 02:11:35 · 161 阅读 · 0 评论 -
c#入门-自动属性,访问器访问权限
一般情况下,类的设计都只会对外公开属性。为了考虑到以后可能添加限制。即便在开始设计的时候还不知道要添加什么限制。不经过任何逻辑处理,只是为了留给以后扩展。对于这种情况,提供了一种简写方式,这称为自动实现属性。在get访问器后直接用分号结尾,不加任何逻辑。可以没有set或init访问器,但如果有,则他们也需要以分号结尾,不能添加逻辑。如果需要后续修改,只需要修改这个属性的访问器就行了。由于没有代码访问到他所控制的字段,全是访问到这个属性本身。所以很容易修改。原创 2022-12-11 01:39:49 · 557 阅读 · 0 评论 -
c#入门-函数的表达式主体
如果一个函数的主体,仅有一条语句,且这条语句不是流程控制语句。那么可以把函数主体的大括号,改为=>表示。如果是有返回值的函数,那么这连return也可以省略。这同样可以适用于访问器。然而,一般不建议对函数使用这种简写方式。因为难以判断这个函数的边界。而属性自体有一对大括号,内部的访问器种类也有限,较为容易判断。原创 2022-12-11 01:21:55 · 403 阅读 · 0 评论 -
c#入门-调用其他构造器
构造器认为没有返回值而不是没有名字,是因为构造器中不能使用return返回值。并且,被调用的构造器的参数,必须是自己的参数,或者一条语句能完成的表达式,在参数后加冒号,使用this代替构造器的名字,并加上括号和参数来调用。在执行时,会先执行被调用的构造器的所有内容,然后才轮到自己。如果需要在构造器中调用其他构造器,需要使用特殊的语法。在函数体内构造出来的变量不能作为被调用构造器的参数。而且不能像方法一样随意调用,包括在构造器内。而且调用的使用用的名字确实就是命名的名字。原创 2022-12-10 04:24:44 · 391 阅读 · 0 评论 -
c#入门-终结器
这个时机相当复杂,并不是每隔一定时间,也不是非要等到你内存快满时。因为不能立刻执行,无法判断何时执行。终结器的定义是~ + 类名 + 括号和花括号。而是在.NET认为有必要是进行一次清理。终结器是当一个实例被清理时执行的操作。原创 2022-12-10 03:03:50 · 279 阅读 · 0 评论 -
c#入门-只读字段
字段可以使用关键字readonly修饰。这样的字段一旦构建完成实例后就不能再更改了。不同于常量,只读因为可以使用变量赋初始值,而初始值来源可能是个随机数。所以只读字段也是不确定的。原创 2022-12-10 02:55:53 · 576 阅读 · 0 评论 -
c#入门-嵌套类
类也可以声明在其他的类中,这称为嵌套类。(不能在函数内再声明类,不存在局部类)声明为嵌套类,通常意味着只有这个类会使用他。例如,火枪手和骑士都会装备护甲,但除了弓箭手不会再有人使用弓箭了。原创 2022-12-10 02:41:33 · 2235 阅读 · 0 评论 -
c#入门-成员类型访问权限低于字段本身
这个兵营和他的成员的访问权限是public,然后你就会发现有个报错。因为没有权限,不止是成员无法访问,他连这个类是什么都不知道。一个知道这个军事机密的人,出去当老师。老师的身份是公开的。现在假设你有一个小兵类,他的访问权限是仅限当前程序集。解决这个问题有两个方法,第一限制兵营本身的访问权限。这相当于这个老师不当老师了,他只能在军事基地里活动。你听都没听过A计划是什么,怎么执行。那他随便说A计划,大家都知道是什么。然后声明一个兵营,用来创造小兵。第二是限制这个成员的访问权限。然后老师跟你说,执行A计划。原创 2022-12-10 02:18:07 · 696 阅读 · 0 评论 -
c#入门-全局引用,全局命名空间
global关键字,意为全局。在引用命名空间前加上这个关键字,可以对整个项目都生效。使得整个项目下的其他文件中,无需再引用此命名空间。但全局引用不能写在命名空间内。控制台应用程序有一些默认的全局引用VS会在左上角标明,对当前文件生效的全局命名空间引用有哪些,并显示来源。原创 2022-12-09 22:22:22 · 1613 阅读 · 0 评论 -
c#入门-完全限定名,引用命名空间
包含完整命名空间的类名,称为完全限定名。例如。原创 2022-12-09 22:08:15 · 1409 阅读 · 0 评论 -
c#入门-别名引用
如果你引用的命名空间中出现了同名的类,那么会无法判断你使用的类型。当然,你可以使用完全限定名。或者,你可以为其中一个类型指代别名。使用引用命名空间语句,为一个标识符赋值一个类型。可以使用这个标识符代替原类型。原创 2022-12-09 21:50:03 · 2591 阅读 · 0 评论 -
c#入门-重载
例如,一个参数列表为3个int类型的方法,和一个参数列表为1一个不定长参数的方法重载,会选择数量更确定的方法。但是,这种判断是有极限的。如果遇到实在无法判断的情况,可以使用强制转换让变量类型符合参数要求。即同一个类下,同名的但参数列表不同的方法,称为方法的重载。函数参数的类型,数量,顺序联合起来称为参数列表。不需要类型转换的方法优先于需要类型转换的方法。从提示的参数名可以看出来调用了哪个方法。编译器会自动选择适用范围更小的方法。但是要求他们使用的参数不同。原创 2022-12-09 03:45:24 · 608 阅读 · 0 评论 -
c#入门-静态构造器,静态类
实例成员在赋值时可以使用静态成员作为初始值。无论是构建包含静态字段属性的表达式,还是调用静态方法获取返回值。因为静态成员先于实例成员存在,在构建实例成员时,静态成员必然已经构造完成。实例字段在赋值初始值时,不能使用其他的实例成员。但静态字段可以使用其他的静态成员构建初始值。只不过静态字段有先后顺序之分。静态字段的初始值赋值会从上到下依次进行。如果使用了还没有赋值初始值的字段,那么此时这个对这个字段取值就是默认值。原创 2022-11-10 02:45:25 · 412 阅读 · 0 评论 -
c#入门-类成员
类成员原创 2022-11-07 14:19:02 · 270 阅读 · 0 评论 -
c#入门-枚举
c#枚举原创 2022-01-29 23:03:41 · 673 阅读 · 0 评论 -
c#入门-解构方法
解构方法是公开无返回值的,名为Deconstruct的方法。所有参数均为out参数。解构方法可以让实例能像元组一样被析构,或使用模式匹配的位置模式。特殊语法只会寻找这个类里是否有名字,返回值,参数符合要求的方法。如果找不到,那么扩展方法也会纳入寻找范围。原创 2022-01-26 14:15:03 · 703 阅读 · 0 评论 -
c#入门-重载运算符
c#运算符重载原创 2022-01-29 15:28:44 · 3166 阅读 · 0 评论 -
c#入门-结构
结构类似于类,但结构是值类型。结构的值就是本身的内容,结构给结构赋值会复制所有内容。而类是引用类型,他的值只有一份地址。引用类型给引用类型赋值会只会复制地址,导致窜号。此外,结构可以实现接口,但。所有结构类型都因为关键字struct继承自ValueType。而ValueType继承自object。原创 2022-01-25 18:41:04 · 217 阅读 · 0 评论 -
c#入门-接口
接口通过interface关键字声明。为了和类区分,通常在名字上会加前缀I。接口不能声明实例字段,声明的属性也不会生成匿名字段。(可以声明静态字段)原创 2022-01-27 20:12:43 · 1208 阅读 · 0 评论 -
c#入门-覆写,虚方法,重写
派生类可以声明和基类同名的成员。如果不加修饰符或使用new关键字修饰(只有醒目提醒的作用),则会覆写基类成员。覆写后如果还想访问基成员,需要使用base关键字访问。在覆写后,派生类会实实在在地存在两个同名成员。具体会访问到哪一个成员,取决于变量声明的类型。原创 2022-01-26 19:49:59 · 1557 阅读 · 0 评论 -
c#入门-继承,多态
当多个类型具有相同的成员时,可以使用继承来少写代码。继承语法为:类型名+冒号+被继承的类型名。原创 2022-01-26 18:37:13 · 811 阅读 · 0 评论 -
c#入门-静态成员
在最开始,我们说实例是帮你管理一些相互影响的数据。而不会干扰这个实例以外的数据。例如减少小兵A的防御,会增加小兵A受到的伤害。和小兵B没有关系。首先,你需要有被管理的数据,然后才会声明出来小兵。这个帮你管理数据的小兵,称为实例。但如果你没有声明这个小兵呢?你看着小兵类,里面写了血量,攻击,防御。你唯一知道的是如果声明出了一个小兵,他的血量,攻击,防御都是一个int数据。但你现在不知道,int数据的哪一个值。原创 2022-01-26 16:24:02 · 747 阅读 · 0 评论 -
c#入门-引用传递参数
c#引用传递原创 2022-01-25 14:18:52 · 2962 阅读 · 0 评论 -
c#入门-属性
属性是特殊的方法,能让用户以字段的形式使用。==属性只能定义为类成员,不能定义局部属性。==原创 2022-01-25 13:25:33 · 1388 阅读 · 0 评论 -
c#入门-构造器
c#构造器原创 2022-01-25 15:24:07 · 2024 阅读 · 0 评论 -
c#入门-访问权限
你创建出一个实例,但是你发现无法点出他的成员。甚至你尝试直接写他的成员,会直接报错。这是因为没有访问权限导致的。未经修饰的成员只允许在自己的内部使用。但是,如果遇到的是自己实例的话,那么自己还是可以访问的。如果你希望一个成员外部访问,需要使用访问权限修饰符修饰他。原创 2022-01-25 08:41:12 · 2335 阅读 · 0 评论