C#之对象特性深入学习

一、里氏替换原则(LSP)

1、原则上子类对象是可以赋值父类对象的,也可以说子类可以替换父类,并且出现在父类能够出现的任何地方,反过来,父类对象是不能替换子类的,这种特性称为里氏替换原则。

2、LSP基本原理

1)当存在继承关系时,声明是父类,则堆中对象保存的类型指针为父类,那么调用的时候,就会执行父类的成员

2)当创建一个子类对象时,声明是父类对象,则只能调用父类方法。声明是子类对象,则先看子类中是否有该方法,没有则父类中寻找,有则调用。

3)里氏替换原则

Father p=new Son();//子类可以隐式的转换为父类

Son z=(Father)p;//父类必须强转为子类

二、类的属性

1、属性的目的就是设置访问与修改成员变量数值的规则

2、属性本质就是 Set_X()与Get_X()方法的简化技术

3、属性的简化写法,就是Set与Get

4、只读属性与只写属性

三、Is与As运算符

1、as关键字含义是转换,但是一旦转换失败后给null值,不会报错

2、两者区别

type A is type B 仅判断A是否为B类型,或者B类型的子类

type A as type B 先判断,再转换

四、结构与类

1、结构体功能:允许用户自定义类型

2、适用范围:适合一些小型的数据结构,这些结构包含的数据以创建后不修改的数据为主。也适合数据打包,一次性定义多个变量。如果需要面向对象的特性,必须用类。成员变量很多的时候,必须用类。

3、结构体使用时,可以New,也可以不New,如果不New,则使用前必须为结构体中所有的成员变量赋值。

4.结构体的限制

1)除非字段声明为const/static,否则无法初始化

2)没有默认的构造函数

3)可以声明带参数的构造函数

4)不能继承

5)在赋值时候进行复制

6)实例化可以不使用New运算符

7)可以实现接口

5、值类型:bool、机构、枚举、均隐式继承System.ValueType

五、字符串与Equals

字符串具有“驻留性”,(恒定性,不变性),即存储空间地址不会变化,操作以后会新增地址。进行字符串增删改的时候,建议使用StringBuilder()方法,先New一个对象,Append()增加,Insert(字符串下标,字符串)插入,Replace()替换,Remove(下标,长度)删除。

字符串的常用方法:

IndexOf() 查找指定字符串,找到会返回字符串下标位置,如果找不到,返回-1

SubString(下标位置,截断长度) 得到子字符串,如果只给下标位置,会从下标位置开始截断至字符串末尾

Split(‘想分隔的字符串’) 截断字符串(返回字符串数组),单引号

Join(“设置的分隔符”,“想加入的字符串”,“想加入的字符串”) 连接字符串(静态方法) 双引号

Format(“字符串{0}字符串{1}”,“字符串”,“字符串”) 格式化字符串(静态方法)

Replace(“旧字符串”,“新字符串”) 替换方法 可用“链式编程”(在Unity中不推荐)

Trim() 剔除字符串两边的空格

string.IsNullOrEmpty(字符串) 判断字符串是否为空 返回真则为空

六、枚举类型

声明关键字:enum

为了更好的识别一个变量的具体含义,且固定变量的适用范围

枚举类型转换Int类型 Convert.toInt32()_,返回的数值为默认下标位置,也可更改赋值(添加“别名”),会自然排序依次累加。

public enum HeroState

{

None,

Walking,

Runing,

Jumping,

Attack,

Hurt,

Dead

}

引用的时候 HeroState hs=HeroState.Attack ,常与Switch共同使用

值类型:基本数据类型,枚举类型(enum),结构类型(struct)

引用类型:类,接口,数组

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱卷的小Zang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值