C#7新语法糖

1.Switch 使用  goto 使用

var kk = ;
switch (kk)
{
  case :
    Console.WriteLine();
    goto case ;
  case :
    Console.WriteLine();
    goto case ;
  case :
    Console.WriteLine();
    goto default;
  case :
    Console.WriteLine();
    goto default;
  default:
    Console.WriteLine("default");
    break;
} /**switch 用法, 在循环中可 分别多种类型 而且可以 进行类型,内容初步判断**/
List<object> objList = new List<object> { "", , 1.22F };
var sum = 0d;
foreach (var item in objList)
{
  switch (item)
  {
    case string str when int.TryParse(str, out int result):
      sum += result;
      break;
    case int number:
      sum += number;
      break;
    case float number when number > :
      sum += number;
      break;
    default:
      break;
  }
} Console.WriteLine(sum);

2.Object?.属性  新语法糖, 可以排除 对象为Null 的情况 , 不能排除属性为null 的情况

TmpClass1 obj1 = null;  //对象为null
var int16 = obj1?.tmpAtt ?? ;// ??0 是判断 如果属性为空,则给默认值
var str = obj1?.tmpAtt1 ?? "";// ??0 是判断 如果属性为空,则给默认值
Console.WriteLine(int16);
Console.WriteLine(str);
int16 = ;
Console.WriteLine($"平均成绩:{(int16 > 80 ? int16 : 0):F2}");

3.Tuple 元组使用   与   解元组,元组调整为结构体,以前是类

Tuple<int, int> tuple = new Tuple<int, int>(, );
Console.WriteLine($"第一个元素item1:{tuple.Item1} 第二个元素item2:{tuple.Item2}");
(string Message, int Code) tuple7 = ("请求失败", );
Console.WriteLine($"第一个元素Message:{tuple7.Message} 第二个元素Code:{tuple7.Code}");
var tuple7t = (Message: "请求成功!", Code: );
Console.WriteLine($"第一个元素Message:{tuple7t.Message} 第二个元素Code:{tuple7t.Code}"); /**解析方法**/
var (Message, Code) = tuple7;
Console.WriteLine($"解析元组 第一个元素Message:{Message} 第二个元素Code:{Code}");
var (Item1, Item2) = tuple;
Console.WriteLine($"解析元组 第一个元素Item1:{Item1} 第二个元素Item2:{Item2}"); TmpClass1 obj1 = new TmpClass1(, "牛牛");
var (age, name) = obj1;
Console.WriteLine($"解析元组 第一个元素age:{age} 第二个元素name:{name}");

4.参数 params 使用    可以代替数组,不过可读性不强

class Program
{
Main方法
static void Main(string[] args)
{
AnyWrite("text", , "abvc");
} static void AnyWrite(params object[] data)
{
foreach (var item in data)
{
Console.WriteLine(item);
}
}
}

关于C#7 新语法糖的更多相关文章

  1. C++11新语法糖之尾置返回类型

    C++11的尾置返回类型初衷是为了方便复杂函数的声明和定义,但是当复杂度稍微提升一些的时候很明显能注意到这种设计的作用微乎其微. 首先考虑如下代码: C++ //返回指向数组的指针 auto func ...

  2. Vue3 Composition API写烦了,试试新语法糖吧—setup script

    前言 Vue3发布近一年了,相信大家对Vue3的新特性,新语法都很熟悉了.那么在使用Composition API的过程中,有没有觉得整个过程比较繁琐.比如你的模板里用到了大量的state和方法的时候 ...

  3. 各个JDK版本新语法糖

    java5语法扩充 自动装箱.泛型.动态注解.枚举.可变长参数.循环遍历等语法 JDK7 fork/join jdk8  二进制数的原生支持.switch语句中支持string <>操作符 ...

  4. C# 中居然也有切片语法糖,太厉害了

    一:背景 1. 讲故事 昨天在 github 上准备找找 C# 9 又有哪些新语法糖可以试用,不觉在一个文档上看到一个很奇怪的写法: foreach (var item in myArray[0..5 ...

  5. vue3 学习笔记(九)——script setup 语法糖用了才知道有多爽

    刚开始使用 script setup 语法糖的时候,编辑器会提示这是一个实验属性,要使用的话,需要固定 vue 版本. 在 6 月底,该提案被正式定稿,在 v3.1.3 的版本上,继续使用但仍会有实验 ...

  6. C# 6.0新特性---语法糖

    转载:http://www.cnblogs.com/TianFang/p/3928172.html 所谓语法糖就是在编译器里写做文章,达到简化代码书写的目的,要慎重使用,省略过多不易理解. NULL检 ...

  7. C#7.0新特性和语法糖详解

    转自IT之家网--DotNet码农:https://www.ithome.com/html/win10/305148.htm 伴随Visual Studio 2017的发布,C#7.0开始正式走上工作 ...

  8. 探索C#之6.0语法糖剖析

    阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...

  9. C#语法糖大汇总

    首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...

随机推荐

  1. Linux系统中rm删除命令

    rm命令 1.可以删除一个目录中的一个或多个文件或目录 2.可以将某个目录及其下属的所有文件及其子目录均删除掉 3.对于链接文件,只是删除整个链接文件,而原有文件保持不变 语法 rm (选项)(参数) ...

  2. 设计自用的golang日志模块

    设计自用的golang日志模块 golang的原生日志模块不能满足需求,而开源的第三方包,也不完全够用.用户较多的logrus,却没有rotate功能,这已经是众所周知的.对于运维来说,当然是希望日志 ...

  3. redis不支持多个数据库实例但是支持多个字典

    Redis多个数据库 注意:Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念. Redis是一个字典结构的存储服务器,而实际上一个Redi ...

  4. C# [ThreadStatic] 标记静态字段对多线程执行的影响

    类的静态字段在类的实例中是共享的.多个线程修改实例字段的值在对其它线程来说是可见的,这也是clr默认的行为.对静态字段添加ThreadStaticAttribute标记可以改变这种默认的行为. Thr ...

  5. 导入GoogleClusterData到MySQL

    本篇随笔记录如何导入google-cluster-data-2011-1-2的 job_events和task_events到MySQL 1. 下载数据 download_job_events: im ...

  6. ubuntu 12.04 nfs-server/client安装配置

    由于opennebula的共享存储的方式需要nfs,为了opennebula 3.8在ubuntu 12.04上搭建做铺垫,先介绍下nfs server和client端的安装和配置.   1. nfs ...

  7. dts reader

    package com.aliyun.dts.connect; import com.alibaba.fastjson.JSONObject; import com.aliyun.drc.client ...

  8. iOS-AVFoundation生成缩略图

    使用MPMoviePlayerController来生成缩略图足够简单,但是如果仅仅是是为了生成缩略图而不进行视频播放的话,此刻使用 MPMoviePlayerController就有点大材小用了.其 ...

  9. iOS-NSString值为Unicode格式(字符串编码转换成中文编码)

    + (NSString *)replaceUnicode:(NSString *)unicodeStr  {             NSString *tempStr1 = [unicodeStrs ...

  10. macpro锁屏后没有进入睡眠

    使用命令pmset -g查看,如图,钉钉阻止了屏幕的睡眠,找了下钉钉的配置,也没有发现有关的内容,重启钉钉后问题解决 displaysleep 10 (display sleep prevented ...