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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/132388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

酒水展示预约小程序的效果如何

酒的需求度非常高&#xff0c;各种品牌、海量经销商组成了庞大市场&#xff0c;而在实际经营中&#xff0c;酒水品牌、经销商、门店经营者等环节往往也面临着品牌传播拓客引流难、产品展示预约订购难、营销难、销售渠道单一等痛点。 那么商家们应该怎样解决呢&#xff1f; 可以…

31.Map集合用法、遍历、排序与常见API

概要&#xff1a; java.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。 Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对&#xff08;称作“键”和“值”&#xff09;&#xff0c;其中每个键映射到一个值。 本文主要介绍java ma…

如何使用VSCode来查看二进制文件

2023年11月6日&#xff0c;周一下午 目录 方法1&#xff1a;安装插件Binary Viewer然后用vscode打开一个二进制文件&#xff0c;并点击右上角的"HEX"方法2&#xff1a;安装插件Binary然后用vscode打开一个二进制文件&#xff0c;并点击右上角的"B" 方法1&…

C-DS二叉树_另一棵树的子树

Description 给你两棵二叉树tree1和tree2,检验tree1中是否包含和tree2具有相同结构和结点值的子树。如果存在,输出true;否则,输出false。 Input 第一行输入t,表示有t个测试样例。 第二行首先输入n1,接着输入n1个整数,表示二叉树tree1。 第三行首先输入n2,接着输入n…

Vite 的基本原理,和 webpack 在开发阶段的比较

目录 1&#xff0c;webpack 的流程2&#xff0c;Vite 的流程简单编译 3&#xff0c;总结 主要对比开发阶段。 1&#xff0c;webpack 的流程 开发阶段大致流程&#xff1a;指定一个入口文件&#xff0c;对相关的模块&#xff08;js css img 等&#xff09;先进行打包&#xff0…

【Unity基础】7.动画状态参数

【Unity基础】7.动画状态参数 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity基础系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;创建动画状态 (1) 创建动画状态 不好意思各位~最近工作比较忙&#xff0c;稍微耽误了这两周的博客。话…

Hydra post登录框爆破

文章目录 无token时的Hydra post登录框爆破带Token时的Hydra post登录框爆破 无token时的Hydra post登录框爆破 登录一个无验证码和token的页面&#xff0c;同时抓包拦截 取出发送数据包&#xff1a;usernameadb&password133&submitLogin 将用户名和密码替换 userna…

项目部署文档

申请SSL证书 先申请,用免费的 下载证书 先将下载下来的保存起来 服务器安装JDK: 创建develop目录 mkdir /usr/local/develop/ 把JDK压缩包上传到/usr/local/develop/目录 解压安装包 并且将安装到指定目录 tar -zxvf /usr/local/develop/jdk-8u191-linux-x64.tar.gz -C /us…

传感与表面分析

传感技术同计算机技术与通信一起被称为信息技术的三大支柱。从物联网角度看&#xff0c;传感技术是衡量一个国家信息化程度的重要标志&#xff0c;作为第二届杭州物联网暨传感技术应用高峰论坛&#xff0c;推进我国传感器产业化快速发展。传感技术是关于从自然信源获取信息&…

【tcl 脚本学习-- tcl 脚本常用命令介绍】

文章目录 TCL在Linux下如何执行TCL 常用语法TCL 中括号和大括号和小括号的详细介绍TCL Catch 命令介绍TCL 中 eval 详细介绍 TCL&#xff08;Tool Command Language&#xff09;是一种动态编程语言&#xff0c;通常用于嵌入到应用程序中以提供脚本功能&#xff0c;或者用于测试…

CMake重要指令常用变量

什么是CMake? 没有使用CMake和使用CMake构建的区别&#xff1f; CMake的基本语法 语法格式&#xff1a; 指令(参数1 参数2...)赋值操作 如 把hello.cpp 赋值给变量HELLO set(HELLO hello.cpp)取变量的值&#xff1a; ${HELLO}但在if控制语句中是直接使用变量名。 if(HEL…

lazarus:数据集快速导出为excel、csv、sql及其他多种格式

lazarus被成为快速开发工具&#xff0c;为什么说“快速”&#xff0c;重要的一点是&#xff0c;很多工具是现成的&#xff0c;可以拿来直接就用。比如数据导出&#xff0c;如果需要把数据集导出为excel格式文件&#xff0c;写代码可能需要很多时间。lazarus就不用了&#xff0c…

Java连接Redis并操作Redis中的常见数据类型

目录 一. Java连接Redis 1. 导入依赖 2. 建立连接 二. Java操作Redis的常见数据类型存储 1. Redis字符串(String) 2. Redis哈希(Hash) 3. Redis列表&#xff08;List&#xff09; 4. Redis集合&#xff08;Set&#xff09; 一. Java连接Redis 1. 导入依赖 pom依赖…

外汇天眼:全员免费,赢奖金!

外汇市场一直以来都是金融投资者的热门领域之一&#xff0c;但对于新手来说&#xff0c;了解和掌握外汇交易可能需要时间和经验。为了帮助新手入门&#xff0c;提高交易技能&#xff0c;外汇模拟交易应运而生。为的是能够零风险无压力地帮助外汇投资者更好地掌握外汇交易的技巧…

【GEE】4、 Google 地球引擎中的数据导入和导出

1简介 在本模块中&#xff0c;我们将讨论以下概念&#xff1a; 如何将您自己的数据集引入 GEE。如何将来自遥感数据的值与您自己的数据相关联。如何从 GEE 导出特征。 2背景 了解动物对环境的反应对于了解如何管理这些物种至关重要。虽然动物被迫做出选择以满足其基本需求&am…

JWT登录校验

工作原理 下面来详细看看 UTF-8 是如何工作的&#xff0c;以及为什么它会根据被编码的字符具有不同的长度。 一、JWT是什么&#xff1f; 在介绍JWT之前&#xff0c;我们先来回顾一下利用token进行用户身份验证的流程&#xff1a; 1、客户端使用用户名和密码请求登录 2、服务端…

Etcd 解析

Etcd 解析 Etcd 是 Kubernetes 集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息。在后面具体的安装环境中,我们安装的 etcd 的版本是 v3.1.5,整个 Kubernetes 系统中一共有两个服务需要用到 etcd 用来协同和存储配置,分别是: 网络插件 flannel、…

STM32中微秒延时的实现方式

STM32中微秒延时的实现方式 0.前言一、裸机实现方式二、FreeRTOS实现方式三、定时器实现&#xff08;通用&#xff09;4、总结 0.前言 最近在STM32驱动移植过程中需要用到微秒延时来实现一些外设的时序&#xff0c;由于网上找到的驱动方法良莠不齐&#xff0c;笔者在实现时序过…

ARCGIS---dem生成高程点

1添加DEM 2在ArcToolbox中点击“3D Analyst工具\转换\由栅格转出\栅格转多点”&#xff0c;调用栅格转多点工具。 3在显示的栅格转多点对话框内&#xff0c;输入栅格选择下载的dem数据&#xff0c;为了保证正常输出&#xff0c;输出要素类最好是默认&#xff0c;方法选择ZTOL…

【SQL篇】一、Flink动态表与流的关系以及DDL语法

文章目录 1、启动SQL客户端2、SQL客户端常用配置3、动态表和持续查询4、将流转为动态表5、用SQL持续查询6、动态表转为流7、时间属性8、DDL-数据库相关9、DDL-表相关 1、启动SQL客户端 启动Flink&#xff08;基于yarn-session模式为例&#xff09;&#xff1a; /opt/module/f…