什么是表达式?
- 表达式是由运算符和操作数组组成的,运算符设置对操作数进行什么样的运算
- 在C#中,如果表达式最终的计算结果为所需的类型值,表达式就可以出现在需要自己或对象的任意位置
什么是运算符?
占位符
static void Main(string[] args)
{
int i = 10;
int j = 20;
//占位符
Console.WriteLine("{0}*{1}={2}", i, j, i * j);
Console.ReadKey();
}
以上代码中,i 对应的是0,j 对应的是1,而 i 与 j 的结果对应的是2
他们的显示结果如下图
- 注意:从零开始的索引必须大于或等于零,且小于参数列表大小
以下代码为C#中的运算符与占位符实践:
static void Main(string[] args)
{
int i = 10;
int j = 20;
//占位符
Console.WriteLine("{0}*{1}={2}", i, j, i * j);
Console.WriteLine("{0}+{1}={2}", i, j, i + j);
Console.WriteLine("{0}-{1}={2}", i, j, i - j);
Console.WriteLine("{0}/{1}={2}", i, j, i / j);
Console.WriteLine("{0}%{1}={2}", i, j, i % j);
Console.ReadKey();
}
显示结果为:
region 和 endregion 是外部代码 用途如下:
使用后可以浓缩为下图:
什么是赋值运算符?
- 赋值运算符为变量,属性,事件等元素赋新值。赋值运算符的左操作数必须为变量,属性访问,索引器访问或事件访问类型的表达式,如果赋值运算符两边的操作数的类型不一致,就需要首先进行类型的转换。然后再赋值。
在使用赋值运算符时,右操作表达数所属的类型必须可隐式转换为左操作数所属的类型,运算将右操作数的值赋值给左操作数指定的变量,属性或索引器元素。
- 运算符实例如下代码
static void Main(string[] args)
{
#region 算数运算符和占位符
//int i = 10;
//int j = 20;
////占位符
//Console.WriteLine("{0}*{1}={2}", i, j, i * j);
//Console.WriteLine("{0}+{1}={2}", i, j, i + j);
//Console.WriteLine("{0}-{1}={2}", i, j, i - j);
//Console.WriteLine("{0}/{1}={2}", i, j, i / j);
//Console.WriteLine("{0}%{1}={2}", i, j, i % j);
//Console.ReadKey();
#endregion
#region 赋值运算符
int i = 10;
int j = 20;
//i+=j 的意思是 i=i+j
Console.WriteLine("{0}+={1}", i, i += j);
Console.WriteLine("{0}-={1}", i, i -= j);
Console.WriteLine("{0}*={1}", i, i *= j);
Console.WriteLine("{0}/={1}", i, i /= j);
Console.WriteLine("{0}%={1}", i, i %= j);
Console.ReadKey();
#endregion
显示结果如下:
两个特殊的符号“++” “–”
- 特殊符号在C#中放在外面没有区别,放在输出语句中才有区别
- i++先执行再输出,++i下一次再执行
int i = 10;
i++;
++i;
Console.WriteLine(++i);
//Console.WriteLine(i);
Console.ReadKey();
//- -意思相同
关系运算符
#region 关系运算符 结果的类型是bool 结果只有true和 false
int i = 10;
int j = 20;
Console.WriteLine("{0}>{1},{2}",i,j,i>j);
Console.WriteLine("{0}<{1},{2}", i,j,i<j);
Console.WriteLine("{0}=={1},{2}", i,j,i==j);
Console.WriteLine("{0}>={1},{2}", i,j,i>=j);
Console.WriteLine("{0}<={1},{2}", i,j,i<=j);
Console.WriteLine("{0}<={1},{2}", i,j,i!= j);
Console.ReadKey();
#endregion
显示结果为:
逻辑运算符
- && :两个关系运算符的条件都成立的时候,返回结果为true 如果第二个条件不成立 则返回false
- || :两个关系运算符的条件一个成立的时候,返回结果为true,如果第二个条件不成立,则返回false
& 与 && 的区别:
- 他们两个在运算上对条件的结果判断不会产生影响,但会对条件判断的运算有影响,关键在于 & 在运算时会连续运算所有需要判断的命令, 但 && 当遇到false时就会停止运算
- 比如:
int i = 5;
Boolean e = i > 4 && i++ > 7;
Console.WriteLine(e);
Console.WriteLine(i);
Console.ReadKey();
以上结果会输出:
因为&&前面的(i>4)的值是true,所以需要继续运算后面的i++
但若像下面这样:
int i = 5;
Boolean e = i > 6 && i++ > 7;
Console.WriteLine(e);
Console.WriteLine(i);
就会输出:
因为&&前面的i>6的值是false,所以判断到这里就会中止运算,即i++不会被执行,被短路了叫做短路与&&
逻辑或||与以上同理
三元运算符 ?:
- 判断条件?条件成立输出:条件不成立输出
取代基本的 if 和 else
#region 三元运算符
Console.WriteLine(10>12? "10>12":"10<12");
//10大于12吗, 如果大于输出10>12 如果不大于输出10<12
Console.ReadKey();
#endregion
其他的运算符
- is 判断是否属于该类型
int i = 10;
Console.WriteLine(i is int);
Console.ReadKey();
显示如下:
- new
new运算符用于创建一个新的类型实例,它有以下三种形式。
一.对象创建表达式,用于创建一个类类型或值类型的实例。
二.数组创建表达式,用于创建一个数组类型实例。
三.代表创建表达式,用于创建一个新的代表类型实例。
- typeof
typeof运算符用于获取系统原型对象的类型,也就是Type对象。Type类包含关于值类型和引用类型的信息。typeof运算符可以在C#语言中各种位置使用,以找出关于引用类型和值类型的信息
Type type = typeof(int);
Console.WriteLine( type);
Console.ReadKey();
以上代码会显示: