zoukankan      html  css  js  c++  java
  • C# 新特性

    1、数据转换

    例如:要把字符串“111”转换为整型,之前方式

    int temp;

    int.TryParse("111", out temp);

    新方式

    int.TryParse("111", out int temp);
    Console.WriteLine(temp);

    object a3 = 123;
    if (a3 is int a4)
    {
    var tm1 = 0;
    tm1 += a4;
    Console.WriteLine(tm1);//
    }

    以上语句会输出123

    2、元组

    无参数名称的元组

    private static (int, int) Get1()
    {
    return (1, 3);
    }

    var a2 = Get1();
    Console.WriteLine(a2.Item1); //使用元组时,使用Item1,Item2来对应具体的元组里的元素

    具有参数名称的元组

    private static (int x, int t) Get()
    {
    return (1, 3);
    }

    在使用时直接可以通过参数名称使用

    var a1 = Get();
    Console.WriteLine(a1.t);

    (int x, int y) tmep1 = (1, 2);
    var yz = (abc: 1, abc1: 3);
    Console.WriteLine(yz.abc);

    3、switch语句

    通过switch语句进行集合分支判断

    IEnumerable<object> enumerableList = new List<object>()
                {
                    0,new List<int>(){1,2,3},100,null
                };
    
                int sum = 0;
                foreach (var at in enumerableList)
                {
                    switch (at)
                    {
                        case 0:
                            break;
                        case IEnumerable<int> lit:
                            foreach (var t in lit)
                            {
                                sum += t;
                            }
                            break;
                        case int n when n > 0:
                            break;
                        case null:
                            break;
                    }
                }
    View Code

    4、枚举和对象属性遍历

           //枚举遍历
            public static string ForEnum(EState state) => state switch
            {
                EState.Close => "ceshi",
                _ => throw new Exception("错误"),
            };
    
            //相当于如下语句
            public static string ForEnum1(EState state)
            {
                switch (state)
                {
                    case EState.Close:
                        return "ceshi";
                    default:
                        throw new Exception("错误");
                }
            }
    
       //属性遍历(属性模式)
            public static string ForProperty(User user) => user switch
            {
                { Name: "ceshi" } => "说明",  //属性Name值为ceshi 返回"说明"
                { Age: 11 } => throw new Exception("错误"),
                _ => throw new Exception("错误")
            };
    View Code

    5、数字文本改进

    int sixteen = 0b0001_0000;
    long billionsAndBillions = 100_000_000_000;

    6、泛型约束

    //    unmanaged //非空约束
    public class User<T> where T : unmanaged //非空约束
        {
            public void Show(T t)
            {
    
            }
        }
            User<int> user1 = new User<int>();
                //User<string> user2 = new User<string>();//错误,因为string可为空
    View Code

    7、默认接口方法

        public interface IPersion
        {
            void Show();
    
            void ShowData()
            {
                Console.WriteLine("afasdfa");
            }
        }
    
        public class CPersion : IPersion
        {
            public void Show()
            {
                Console.WriteLine("aaaa1111");
            }
        }
    
     IPersion cPersion = new CPersion();
                cPersion.Show();
                cPersion.ShowData();
    View Code

    8、异常过滤

            public void TesetThrow()
            {
                try
                {
                    //throw new Exception("abc");
                    throw new Exception("ttt");
                }
                catch (Exception ex) when (ex.Message.Contains("abc"))
                {
                    Console.WriteLine(ex);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }
    View Code
  • 相关阅读:
    进程和线程的区别?什么时候用进程?什么时候用线程?----看到好的复制到自己的园子里哈哈
    HTTPS详细讲解一篇就够了
    MySQL存储过程
    Spring注入全局的HttpServletRequest
    Java进阶必备
    Java8新特性
    java.time包常用类API学习记录
    Maven常用插件
    maven-dependency-versions-check-plugin, Maven 插件查找依赖版本冲突
    Jackson自定义注解
  • 原文地址:https://www.cnblogs.com/Duko/p/14798071.html
Copyright © 2011-2022 走看看