C# 语言类型(五)—其他

总目录
C# 语法总目录

参考链接:
C#语法系列:C# 语言类型(一)—预定义类型值之数值类型
C#语法系列:C# 语言类型(二)—预定义类型之字符串及字符类型简述
C#语法系列:C# 语言类型(三)—数组/枚举类型/结构体
C#语法系列:C# 语言类型(四)—传递参数及其修饰符
C#语法系列:C# 语言类型(五)—其他

C# 语言类型 五—其他

      • 一、类型默认值
      • 二、null 运算符 ?
        • 1. null 合并运算符
        • 2. null条件运算符
      • 三、语句特性
        • 1. 带模式的 switch 语句(C#7)
        • 2. switch 语句 case使用条件 when
        • 3. 跳转语句
          • (1) goto语句使用
          • (2) break 语句
          • (3)continue 语句
          • (4) throw 语句
        • 4. using 语句

一、类型默认值

所有类型的实例都有默认值。

char类型默认值 是 ‘\0’

bool类型默认值 是 false

所有数字类型默认值 是 0

所有引用类型默认值 是 null

static int a;
static bool b;
static char c;
static string d;
static void Main(string[] args)
{Console.WriteLine(a);Console.WriteLine(b);Console.WriteLine(c);Console.WriteLine(d);
}
//输出
0
False

二、null 运算符 ?

C#提供了两个null处理运算符: null合并运算符null条件运算符

1. null 合并运算符

  null合并运算符写作 ?? 。意思是 “如果操作数不是null,则结果是操作数,否则结果是一个默认的值”。

namespace _036_显示转换和隐式转换 {class Program {static void Main(string[] args){string ss = null;//ss = "ts";string res = ss ?? "nothing";Console.WriteLine(res);		//nothing}}
}
2. null条件运算符

  null条件运算符写作 ?. 意思是如果左值为null,则为null,否则为该值内的成员。

例如 :

namespace _036_显示转换和隐式转换 {class Program {static void Main(string[] args){string ss = null;//ss = "NIHAO";				//输出nihao	ss = ss?.ToLower();Console.WriteLine(ss);		//输出空行}}
}

注意: null 两种运算符的混合使用如下

StringBuilder? sb = null;
string a = sb?.ToString() ?? "sb is null";
Console.WriteLine(a);
//输出
sb is null

三、语句特性

1. 带模式的 switch 语句(C#7)

object可以是任何类型的变量

static void TellMeTheType(object x)
{switch (x){//这里的 i 称作模式变量case int i:Console.WriteLine("It's an int");Console.WriteLine($" {i} square is {i*i}");break;case double i:Console.WriteLine("It's an double");Console.WriteLine($" {i} square is {i * i}");break;case string i:Console.WriteLine("It's an string");Console.WriteLine("string is " + i);break;default:break;}
}static void Main(string[] args)
{TellMeTheType(12);TellMeTheType("hello");TellMeTheType(12.5);
}
//It's an int
//12 square is 144
//It's an string
//string is hello
//It's an double
//12.5 square is 156.25
2. switch 语句 case使用条件 when

类似if判断

switch(x)
{case float f when f>100:case double d when d>100:case decimal m when m>100:Console.WriteLine("We can refer to x here but not f or d or m");break;case null:Console.WriteLine("Nothing here");break;
}
3. 跳转语句

C#中的跳转语句有 break , continue,goto,return和throw

(1) goto语句使用
int myInteger = 5;
goto mylabel;//goto语句用来控制程序跳转到某个标签的位置
myInteger++;
mylabel:Console.WriteLine(myInteger);
Console.ReadKey();

如果在try语句里面执行goto,那么在goto之前会执行finally块内语句。

goto语句无法从finally块中跳到块外,除非用throw

(2) break 语句

退出当前最近一层的 for 循环

(3)continue 语句

跳过当前最近一层的 for 循环

(4) throw 语句

抛出异常

4. using 语句

  这里的 using 语句和using指令用于命名空间不一样,这里的using语句主要作用是关闭一个持续流,例如自动关闭一个打开的文件,主要利用的是 调用 Dispose方法

{//这样写,可以省略 a.close()方法using var a = File.Open(@"D:\\a.txt", FileMode.Open);
}//等同于
{var a = File.Open(@"D:\\a.txt", FileMode.Open);try{Console.ReadLine();}finally{//释放资源a.Dispose();}
}

总目录
C# 语法总目录

参考链接:
C#语法系列:C# 语言类型(一)—预定义类型值之数值类型
C#语法系列:C# 语言类型(二)—预定义类型之字符串及字符类型简述
C#语法系列:C# 语言类型(三)—数组/枚举类型/结构体
C#语法系列:C# 语言类型(四)—传递参数及其修饰符
C#语法系列:C# 语言类型(五)—其他

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

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

相关文章

如何使用Flask搭建web程序框架并实现无公网IP远程访问本地程序

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架,让我们可以使用Python语言快速实现一个网站或Web服务,本期教程…

模拟器无法ADB链接的所有情况及解决方案

前言: adb(Android Debug Bridge)安卓调试桥,简单可以理解为外部连接安卓内部的一个接口,走的是tcp协议。 但是在模拟器上面经常会遇到连不上adb,在此收集一下各种情况,想起来或者遇到了就更新…

bonding原理分析和问题排查

bonding原理 发送端: 使用网卡bond3模式(广播模式BOND_MODE_BROADCAST)将报文从两个网卡同时发出,无需修改报文。 接收端: 根据发送节点时间的链路通断状态,接收端设置一条线路为活动线,另一条…

免费泛域名SSL如何申请,和通配符有什么区别

-----让我们明确什么是泛域名。所谓泛域名,是指使用星号(*)作为子域名的占位符,它可以匹配任意子域名。-----而通配符在域名中,它可以出现在主域名的任何位置,它可以用于主域名和子域名的保护。 主要应用场…

XZ-Utils后门事件过程及启示

Part.01 背景 XZ-Utils(曾经叫做LZMA Utils)是一款开源的无损压缩命令行工具,是用C语言编写的跨平台工具,可以用于类Unix系统和Windows系统。在多数情况下,xz的压缩率要好过gzip和bzip2,解压速度也快过bz…

算法学习笔记——专题拓展2:数组双指针经典习题

关于数组的技巧有:双指针(快慢指针(时差、位差)) 例题1:合并两个有序数组 代码:逆向双指针,可以不用重开数组,如果是正向的,需要重开一个数组腾空间。 class Solution …

图书借阅系统开发笔记

图书借阅系统开发介绍及心得 项目已开源到 github https://github.com/Qiu-JW/books-manage-systemgitee https://gitee.com/qiu-jw/books-manage-system 技术栈 前端 HTML5、CSS、JS、jQuery、axios、bootstrap 后端 servlet、JSP、JDBC 数据库 MySQL 项目采用mvc模式构成 …

Java的数组定义和使用

目录 1.前言 2.数组的概念 3.在Java中的创建和初始化 3.1数组的创建 3.2数组的初始化 4.关于使用 4.1数组元素的访问 4.2数组的遍历 4.3length和length()的区别 5.数组其实是引用类型数据 5.1初始JVM的内存分布 5.2基本类型变量与引用类型变量的区别 5.3关于null的认识 5.4设计…

手眼标定(外参)

1. 传统使用张正友相机标定,角点检测 //张正友相机标定,角点检测 for(int i=1;i<=images_number;i++){Mat image=imread(images_path+to_string(i)+String("/color.jpg"));Mat output=image.clone();image_size.width=image.cols;image_size.height=image.…

(34)4.17 作业课

//弓箭型 int main() { int n 0; while (scanf("%d", &n) 1) { int i 0; for (i 0; i < n; i) { int j 0; for (j 0; j < n - i; j) { printf(" &q…

工作流JBPM画图与配置

文章目录 ☃️7.1 画图☃️7.2 配置7.2.1 配置任务办理人7.2.1.1 写死的方式配置任务办理人&#xff08;不推荐&#xff09;7.2.1.2 #{}方式配置任务办理人7.2.1.3 实现接口方式配置任务办理人7.2.1.4 方法指定方式分配任务办理人 7.2.2 配置节点属性7.2.2.1 判断节点(decision…

Sourcetree安装使用(补个笔记)

Sourcetree介绍 Sourcetree是一款免费的Git图形化客户端&#xff0c;它由Atlassian开发&#xff0c;提供了跨平台的支持&#xff0c;可运行在Windows和Mac操作系统上。Sourcetree可以让开发者更方便地使用Git来管理代码&#xff0c;不需要在命令行中输入复杂的Git命令&#xf…

symfony框架介绍

Symfony是一个功能强大的PHP框架,它提供了丰富的组件和工具来简化Web开发过程。以下是一些关于Symfony的主要特点: 可重用性: Symfony提供了一系列可重用的PHP组件,这些组件可以用于任何PHP应用程序中。灵活性: Symfony允许开发者根据项目需求灵活选择使用哪些组件,而不是强…

HTML学习笔记:链接target属性

关于target的使用&#xff1a; <a href"https://www.baidu.com" target"_parent">网址链接</a>其中关于target四个特殊目标的理解&#xff0c;W3school上的解释为&#xff1a; HTML 标签的 target 属性 其中_black和_self两个属性很好理解&…