【C#语言入门】09. 操作符详解(中)
四、各类操作符的示例
- new
主要功能是创建一个类型的实例,并且调用实例构造器。
Form myForm = new Form();
myForm.Text = "Hello!";
myForm.ShowDialog();
附加功能是调用构造器的初始化器。
Form myForm = new Form(){Text = "Hello!", FormBorderStyle.SizableToolWindows};
myForm.ShowDialog();
//初始化器可以初始化多个内容
new Form().ShowDialog();
能用,但是是一次性的,因为没有把实例存到变量中去,过一会儿就会被回收。
int x = 100;
string name = "bu";
int[] myArray = {1, 2, 3, 4};
string name = new string();//也行
这些个也是类型,但是创建实例不需要new,这叫做C#的语法糖衣,一些非常基础的类型就帮你省掉了,当然你非要用也是没关系的。
var person = new {Name = "Mr.Okay", Age = 34};
隐式类型创建实例。
- checked&unchecked
功能是,检查一个值在内存中是否有溢出
checked
{
//在语句块内的所有都会被检测是否溢出
}
-
delegate
最广泛的作用不是用作操作符,而是声明委托,作为操作符的应用场景已经很少了,被别的方法取代。 -
sizeof
获取对象在内存当中所占字节数的尺寸。默认情况下只能获取基本数据类型的尺寸(结构体),在非默认的情况下我们可以用他去获取非基本数据类型,但是要放在非安全的环境中(unsafe) -
->
是指针操作,指针操作或者内存操作只能对结构体使用,不能对引用类型使用
unsafe
{
Student stu;
stu.ID = 1;
stu.Score = 99;
Student* pStu = &stu;
pStu->Score = 100;
(*pStu).Score = 1000;
Console.WriteLine(stu.Score);
}
struct Student
{
public int ID;
public long Score;
}
-
&x
取地址操作符,实例同上。 -
*x
取引用操作符,实例同上。 -
+、-、!、~
正副非反操作符,正副操作符基本与数学运算符一致,但是由于计算机语言中数据类型的最大值和最小值绝对值并不相同,因此对最大值直接取负很有可能产生溢出,因此我们要用到取反操作(~)。
int x = 100;
int y = -(-x);//不能--x
int x = 12345678;
int y =~x;//结果为-12345679
bool b1 = true;
bool b2 = !b1;//结果为false
if(!string.IsNullOrEmpty(intName))
{
this.Name = intName;
}
else
{
throw new ArgumentException("intName cannot be null or empty.");
}
-
++x 、 --x
前置自增自减,先增减后赋值。 -
x++ 、 x–
后置自增自减,先赋值后增减。