var用于声明过隐式类型变量 刚开始不知道是什么类型的,赋值的时候系统会自动推断
new操作符 在内存中创建一个类型的实例,并立刻调用实例构造器()
没有变量引用时,垃圾收集器中, 内存会被清理
通过=建立引用关系
还可调用实例的初始化器 加一对花括号{Text = “hello”}
非匿名类型和匿名类型的创建实例的方法
Form是非匿名类型 person是匿名类型,为它创建对象new,并引用它的实例var
CS类中的new关键字是修饰符不是构造器,这样做的目的是子类将父类的方法隐藏掉
在调用这两个类的方法时,只会显示子类的方法。
checked和unchecked
检查内存是否有溢出的作用
binStr是二进制的转化形式
x已经是uint最大的值了,在加一,就会进位输出y=0
此时,y = checked(x+1);就会提示你有溢出异常
此时,用try抓住这个异常。
如果换成unchecked就不会检查溢出了,一般系统默认是不检查的
还有一种作用,检查上下文语句块
delegate声明委托类型
现在是当做操作符来使用,比较少,被lambda表达式取代了
+=这个操作符为这个事件挂接了一个事件处理器(连按两下TAB键会自动生成)
演化1:
如果这个事件方法不会被复用,只用一次就消失,那可以用匿名方法来声明,如下
现在上述delegate声明匿名方法已经过时了,下面是用lambda表达式来表示的
默认情况下,sizeof只能用于获取基本数据类型在内存当中所占的字节数int x = sizeof(int)
非默认情况下,也可以查看自定义结构体中所占的字节,但要放在unsafe上下文中(需要在build中设置一下)
->操作符
在C#中,指针操作。取地址操作,指针访问成员操作只能 操作结构体类型,不能操作引用类型。
. 是直接访问 ->是通过指针间接访问
将stu的地址取出来交给pStu这个指针,或者也可以写(*pStu).Score = 100; 成员访问符是基本操作符,优先级大于指针操作符,所以要加括号
上述是基本操作符,下面是
(单目操作符)一元操作符只有一个操作作数
正反操作符注意溢出
int x=int.maxvalue
int y = -x;
此时就会溢出
取反
padleft是左对齐,取32位,不足的用0补齐
!取非只能对bool类型操作
++ – 在单独使用时前置和后置效果一样
有赋值操作时就不一样了
int x=100;
int y = ++x;
y = 101 先加后赋值
int y = x–;
y = 100; 先赋值后减
尽量单独使用,增强可读性