赞
踩
=>用法主要有两种,第一种是Lambda表达式,第二种是用于赋值;
第一种lambda用法:
- // 声明一个函数指针的对象, 也就是委托, 其函数签名为string f(Person)
- Func<Person, string> nameProjection = p => p.Name;
-
- // 上面这句, 等同于:
- Func<Person, string> nameProjection = delegate (Person p) { return p.Name; };
第二种赋值用法 :
- public int MaxHealth1 => x ? y:z;
- //等同于属性的快写方式
-
- public int MaxHealth1
- {
- get
- {
- return x ? y:z;
- }
- }
再举个例子:
- class Program
- {
- public class A
- {
- public static int x;//默认初始化为0
- public int X1 => x;
- public int X2 = x;
- }
-
-
- static void Main()
- {
- Console.WriteLine(A.x);// 0
-
- A a = new A();
- Console.WriteLine(a.X1);// 0
- Console.WriteLine(a.X2);// 0
-
- A.x = 5;
- Console.WriteLine(a.X1);// 5
- Console.WriteLine(a.X2);// 0
-
- A.x = 10;
- Console.WriteLine(a.X1);// 10
- Console.WriteLine(a.X2);// 0
- }
- }
可以看到,每次去取X1的值的时候,都会执行return x;
这个表达式,所以上面的问题解决了。
主要有两个作用:
1、不需要用\\来转义非转义符号的\号
- string str=@"D:\itjsxx\icon"
-
- //等价于
- str="D:\\itjsxx\\icon"
2、可以实现多行字符串赋值
- string str=@"itjsxx.com
- adcd
- ddd
- ddd
- 3333
- 11
- eee
- www.itjsxx.com"
3、用关键字做变量名时前面可以加@
string @int = "www.itjsxx.com";
1、其作用相当于对String.format()的简化。
- string test = string.Format("{0:N1}", 56789)
- Console.WriteLine(test);
- Console.WriteLine($"{test}");
- Console.WriteLine($"{56789:N1}");
通过上述代码可以得到string.Format中{}需要0当做占位符,在“”后56789进行编译,$可以直接对{}内的变量进行编译。总结:$"“相当于 string.Format(”"),同时不需要再使用0当做占位符,可以在{}内直接添加变量。
三元运算符也被称为条件运算符,与后面要学习的 if 条件语句非常类似。
在 C# 语言中三元运算符只有一个,具体的语法形式如下。
布尔表达式 ? 表达式 1: 表达式 2
判断条件?表达式1:表达式2
其中:
布尔表达式:判断条件,它是一个结果为布尔型值的表达式。
表达式 1:如果布尔表达式的值为 True,该三元运算符得到的结果就是表达式 1 的运算结果。
表达式 2:如果布尔表达式的值为 False,该三元运算符得到的结果就是表达式 2 的运算结果。
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("10为:"+(10 % 2 == 0 ? "偶数":"奇数"));
- }
- }
需要注意的是,在三元运算符中表达式 1 和表达式 2 的结果的数据类型要兼容。
不为null时执行后面的操作。
- estClass a = null;
- int num = a?.Num;
- //等价于
- if(a!= null)
- num = test1.Num;
- else
- num = 0;
如果不赋予初值,C#的变量是不允许直接使用的。
但有的时候,让值的类型为空是非常有用的,搜索比如三态bool,其中一个状态便是未给定值。
泛型使用System.NullAble提供了类型值为空的一种方式。System.NullAble nullAbleInt;
因为太常用,C#特意给了一个语法快捷int? nullAbleInt;
- * int? nVal1 = new int?();
-
- * int? nVal2 = null;
-
- * int? nVal3 = 3;
-
- * Console.WriteLine(nVal1); // 输出null
-
- * Console.WriteLine(nVal2); // 输出null
-
- * Console.WriteLine(nVal3); //输出3
在C#中不能有空赋值,但通过数据类型后加?可以对变量进行空赋值。
为了减少可空类型的代码量,遇到null的时候C#提供了??操作符来获取如果为空的默认值。
- static void Main(string[] args)
-
- { int? nVal1 = null;
-
- int? nVal2 = 5;
-
- // nVal1为空,相乘后还是null,输出0作为默认值
-
- Console.WriteLine(2 * nVal1 ?? 0);
-
- // nVal2非空,取计算值输出,输出10
-
- Console.WriteLine(2 * nVal2 ?? 10);}
- int?a = null;
- int b = a * 2 ?? 10;
- Console.WriteLine(b);
- Console.Read();
参考文献:
C#里=>的两种用法_c#中=>_CAXCoder的博客-CSDN博客
字符串相关:C#字符串输出格式_c#输出字符串-CSDN博客
学习C#(三)——基本语法(运算符)_c#立方-CSDN博客
【c#操作小技巧】一些特殊符号的意义和使用? 、?:、?? 、?._c# 特殊符号_相信神话2021的博客-CSDN博客C#基础语法---符号_c# 符号_苑天赐的博客-CSDN博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。