当前位置: 首页 > news >正文

C#学习相关系列之常用符号介绍

一、=>符号的用法

=>用法主要有两种,第一种是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;//默认初始化为0public int X1 => x;public int X2 = x;}static void Main(){Console.WriteLine(A.x);// 0A a = new A();Console.WriteLine(a.X1);// 0Console.WriteLine(a.X2);// 0A.x = 5;Console.WriteLine(a.X1);// 5Console.WriteLine(a.X2);// 0A.x = 10;Console.WriteLine(a.X1);// 10Console.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运算符

不为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运算符

为了减少可空类型的代码量,遇到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# $-CSDN博客

字符串相关:C#字符串输出格式_c#输出字符串-CSDN博客

学习C#(三)——基本语法(运算符)_c#立方-CSDN博客

【c#操作小技巧】一些特殊符号的意义和使用? 、?:、?? 、?._c# 特殊符号_相信神话2021的博客-CSDN博客C#基础语法---符号_c# 符号_苑天赐的博客-CSDN博客

相关文章:

  • npm ERR! network ‘proxy‘ config is set properly. See: ‘npm help config解决方法
  • HarmonyOS UI 开发
  • Excel【毫秒】/【秒】转换成【时分秒】/【分秒】
  • 【C语法学习】18 - fread()函数
  • Java 语言环境搭建
  • ch579串口编程笔记
  • 婴儿专用洗衣机哪个牌子比较好?婴儿专用洗衣机哪个牌子比较好
  • CODESYS开发教程12-任务配置
  • Spring底层原理学习笔记--第二讲--(BeanFactory实现与ApplicaitonContext实现)
  • Oracle(10)Managing Undo Data
  • 【服务器使用】vscode winscp进行服务器容器连接(含修改初始密码)
  • maven之pom文件详解
  • Elasticsearch:在你的数据上训练大型语言模型 (LLM)
  • CHS零壹视频恢复程序高级版视频修复OCR使用方法
  • 如何通过一条数字人三维动画宣传片,打造出数字文旅
  • avalon2.2的VM生成过程
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • iOS 系统授权开发
  • Java精华积累:初学者都应该搞懂的问题
  • Linux后台研发超实用命令总结
  • PermissionScope Swift4 兼容问题
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Ruby 2.x 源代码分析:扩展 概述
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 编写符合Python风格的对象
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 跨域
  • 理清楚Vue的结构
  • 数据结构java版之冒泡排序及优化
  • 数据科学 第 3 章 11 字符串处理
  • 我的zsh配置, 2019最新方案
  • 我的面试准备过程--容器(更新中)
  •  一套莫尔斯电报听写、翻译系统
  • 源码安装memcached和php memcache扩展
  • 组复制官方翻译九、Group Replication Technical Details
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​力扣解法汇总946-验证栈序列
  • # Apache SeaTunnel 究竟是什么?
  • #ifdef 的技巧用法
  • #Java第九次作业--输入输出流和文件操作
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $.ajax()方法详解
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (4)logging(日志模块)
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (八)Flask之app.route装饰器函数的参数
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (十六)Flask之蓝图
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)EOS中账户、钱包和密钥的关系
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET开发人员必知的八个网站