011 操作符详解 中
基本操作符
new
new操作符 中的实例初始化器
当对某个对象访问为一次性的情况,没有必要创建对象引用实例
new操作符创建实例,用初始化器初始化它的属性,然后用 . 调用(访问)它的方法
一段时间后被垃圾回收期回收
使用new为匿名类型创建匿名对象,并且用var 隐式的应用这个实例 该类型GetType()无法识别
new操作符有一定危险性
大型程序中为避免new操作符造成紧耦合 使用依赖注入的设计模式使耦合变松
new 关键字可以隐藏父类中的方法 ,使子类调用自身方法 不常见
checked()
checked 操作符:让程序检查一个值在内存中是否溢出
unchecked 操作符:让程序不需要检查一个值在内存中是否溢出
unchecked模式不检查是否溢出,所以就不会触发try 语句
C# 中默认为unchecked 模式
checked 上下文用法 检查{} 内的所有值是否溢出 unchecked 反之
delegate 操作符
该语法已经过时 被Lambda 表达式代替
sizeof操作符
默认情况只能获取基本数据类型的实例在内存中所占的字节数(基本数据类型就是结构体数据类型)string object除外
非默认情况,可以获取自定义结构体实例在内存中所占的字节数,但是需要把它放在不安全(unsafe语句块中)的上下文中
—>操作符
直接操作内存必须放在unsafe(不安全的上下文中)的语句块中
—>通过指针间接访问成员
.直接访问成员
一元(单目)操作符 (只有一个操作数)
&x取地址操作符 *x取指针符号
都需要在不安全的上下文之中
*pStu.Score = 1000;
必须加括号 因为 . 的运算优先级高于*
~ 求反操作符
对一个值在二进制的级别上按位取反
xStr 和yStr 按位取反
++x --x
++x 和x++ 单独使用时效果是一样的
区别在于加入赋值运算符后
后置 ++ 先把值赋给左边变量 在进行++ 操作 先用值再++ 前置 ++ 先++ 在赋值
尽量单独使用 ,因为和其他运算符一起可读性非常差