当前位置:网站首页>On the practical application of C 9's new features
On the practical application of C 9's new features
2020-11-09 19:13:00 【Irving the procedural ape】
You must be curious :“ Old week , Where did you fly the plane ? I haven't blogged for so long .”
Old week :“ I can't afford a plane , Opened an iron mine , A year and a half of digging stones . Who knows that the iron ore has collapsed , Several centipedes were crushed to death , Nothing was dug .”
therefore , Such a loss of the dead , Don't mention it , My grandfather taught me to keep a low profile ……
A blink of an eye ,.NET 5 We're going to have , It also brings C# 9. Imagine that , Lao Zhou just got in touch with him .NET 1.1 When , Just went to college ; Now it's over 13 Years. . Time is a fruit knife , Never forgive .
Lao Zhou seldom wrote such as “XXX New characteristics ” Articles like that , I always think it's useless . however , in the light of C# 9, What does Lao Zhou want to say .
good , Before we start , Lao Zhou stressed it again : These are the new features of the language , You must not study on purpose , Do not , Don't , Don't , Say important things four times ! All you have to do is look at the official instructions , You can master it by brushing it once ( It's much more tiktok than brush. ), You don't have to learn . If you have to learn the cost of these things , I just want to say something good to sing but not to hear —— Your ability to learn is really questionable .
Okay , Let's start the show .
First out :record type
record , I'll use the original words , I know there is a translation for “ Record type ” That's what I'm saying . It's just , It's just , Lao Zhou thinks this is not very good , But Lao Zhou couldn't find a better word , Or use it back record Well .
record yes Reference type , Follow class It's like ( It's almost ). that , It is familiar to the people class Is it not fragrant , Why add one record Well ? answer : For the convenience of data comparison .
Don't understand ? Don't worry , To look down . Recently, an enthusiastic neighbor sent an old Monday pet :
public class Cat { public string Nick { get; set; } public string Name { get; set; } public int Age { get; set; } }
This new pet is not easy , One top one high class food . Fish 、 pork 、 A chicken leg 、 cookies 、 tofu 、 bread 、 Fruits 、 noodles 、 Wheat 、 moth …… Anyway , As long as it's in your mouth , It's all eaten .
Next , We new Two pet examples .
// Two examples describe the same cat Cat pet1 = new Cat { Nick = " Pine nuts ", Name = "Jack", Age = 1 }; Cat pet2 = new Cat { Nick = " Pine nuts ", Name = "Jack", Age = 1 }; // It's not the same cat Console.WriteLine(" The same one ?{0}", pet1 == pet2);
Actually , The two examples describe my darling . But , The output is :
The same one ?False
This is because , In equality comparison , Type references of concern —— Is the reference the same instance . however , In the data processing scheme , We are more concerned with fields in objects / Whether the attributes are equal , Content comparison .
Now? , hold Cat The statement was changed to record type .
public record Cat { public string Nick { get; set; } public string Name { get; set; } public int Age { get; set; } }
And then use the same thing on top pet1 and pet2 Examples are compared for equality , Get the expected result :
The same one ?True
record Type saves you from rewriting equality comparisons ( rewrite Equals、GetHashCode Or overloaded operators ) The logic of .
actually , The code is compiled record Type is also a class , But it automatically implements the logic of member equality comparison . What you used to do manually is now left to the compiler .
If , There is one User type , Used to represent user information ( Include user name 、 password ), And then this User Types in data processing schemes may produce N More than one instance . For example, you can start from EF Select one from the model User example A, Based on the login name and password entered by the user User example B. In order to verify that the login information entered by the user is correct , If User yes class, You may have to judge that :
if(A.UserName == B.UserName && A.Password == B.Password){ ..................}
But if you put User Defined as record type , that , A word of time :
A == B
Second out : Pattern matching (Pattern Matching)
" Pattern matching " This translation feels strange , Lao Zhou hasn't come up with any better words . Pattern matching is not something magical , It's just an extended behavior when detecting variable values . before , Old feeling C++/C# Of switch The statement is not strong enough , Because of the traditional usage , Every case Clause can only compare a single constant value . such as
int Test results = 85; switch ( Test results ) { case 10: Console.WriteLine(" It's just a little bit of a break in the exam "); break; case 50: Console.WriteLine(" It's a little bit close , It's qualified "); break; case 85: Console.WriteLine(" It's a show "); break; case 90: Console.WriteLine(" Miracles happen "); break; }
I fantasized , I wish I could write like this :
switch ( Test results ) { case 0: Console.WriteLine(" miss an exam ?"); break; case > 0 && <= 30: Console.WriteLine(" Too bad "); break; case > 30 && < 60: Console.WriteLine(" Not yet. "); break; case >= 60 && < 80: Console.WriteLine(" We have to work hard "); break; case >= 80 && < 90: Console.WriteLine(" Xiuer , Excellent "); break; case >= 90 && <= 100: Console.WriteLine(" Pretty good , Miracle "); break; }
It's been waiting for years and years (“ Wait a thousand years , etc. ……”) in the future , Finally, it can be realized .
switch ( Test results ) { case 0: Console.WriteLine(" miss an exam ?"); break; case > 0 and <= 30: Console.WriteLine(" Too bad "); break; case > 30 and < 60: Console.WriteLine(" Not yet. "); break; case >= 60 and < 80: Console.WriteLine(" We have to work hard "); break; case >= 80 and < 90: Console.WriteLine(" Xiuer , Excellent "); break; case >= 90 and <= 100: Console.WriteLine(" Pretty good , Miracle "); break; }
Yossi , It's delicious .
occasionally , Not only do you want to detect the value of the object , It has to go deep into its members . Here's an example ,Order Class represents an order information .
public class Order { public int ID { get; set; } public string Company { get; set; } public string ContactName { get; set; } public float Qty { get; set; } public decimal UP { get; set; } public DateTime Date { get; set; } }
Not long ago , The company received a sum of money Order, It should be a good profit .
Order od = new Order { ID = 11, Company = " Big mouth dog Trading Co., Ltd ", ContactName = " Mr. Chen ", Qty = 425.12f, UP = 1000.55M, Date = new(2020, 10, 27) };
If I want to be in a variable od Do on switch, have a look , That's it :
switch.........
版权声明
本文为[Irving the procedural ape]所创,转载请带上原文链接,感谢
边栏推荐
- How to use binary search algorithm
- [最佳实践]了解 Eolinker 如何助力远程办公
- 双十一大秒杀,云服务器低至 0.7 折
- 传统采购模式已变!汽车采购职能该如何创新?
- 手把手教你使用容器服务 TKE 集群审计排查问题
- Four solutions of Android soft keyboard occlusion
- Share tips on editing letters and mathematical formulas with MathType
- Mongodb source code implementation series network transport layer module implementation 3
- 云数据库的本质是什么?探究华为云数据库的核心价值
- Git + -- Code hosting in the history of version management
猜你喜欢
C#控制台调用FFMPEG推MP4视频文件至流媒体开源服务平台EasyDarwin过程
More than 60 technical executives gathered in Songshan Lake, and the first phase of Huawei cloud core partner developer training camp was successfully concluded
第三阶段 Day20 购物车模块实现 添加拦截器 添加用户权限校检 实现订单模块
修改jar包里的文件
Hand in hand to teach you to use container service tke cluster audit troubleshooting
Another comparison operator related interview question let me understand that the foundation is very important
Git old bird search manual
How the API gateway carries the API economic ecological chain
[stm32f429] Chapter 6: stm32f429 dma2d acceleration of ThreadX guix
【云小课】版本管理发展史之Git+——代码托管
随机推荐
From Silicon Valley to Xiaomi, Cui Baoqiu's 25 years of open source life
Abbyy finereader 15 added edit table cell function
Building Hadoop environment based on pseudo distributed under centos7
day83:luffy:添加购物车&导航栏购物车数字显示&购物车页面展示
修改jar包里的文件
JT-day10
iOS下带小数点的数字键盘
Defects in singleton mode of DCL and other implementations of singleton
【STM32F429】第6章 ThreadX GUIX上手之STM32F429 DMA2D加速
百亿级数据分表后怎么分页查询?
Abbyy finereader 15 adds editing page layout function
Gesture switch background, let live with goods more immersive
说说 C# 9 新特性的实际运用
ABBYY FineReader 15 新增编辑表格单元格功能
Using powerful powerbi Sangji diagram to express complex operation business flow
Hand in hand to teach you to use container service tke cluster audit troubleshooting
More than 60 technical executives gathered in Songshan Lake, and the first phase of Huawei cloud core partner developer training camp was successfully concluded
几乎刷完了力扣所有的链表题,我发现了这些东西。。。
A practical chrome Gadget: xtrace
In the third stage, day19 users echo packaged cookie products and remotely call Shopping Cart module crud operation