首页 > 编程语言 >C# =>实用详解

C# =>实用详解

时间:2022-11-11 14:22:43浏览次数:48  
标签:string 委托 C# Sex 实用 int 详解 public

我们在使用C#编程的时候,经常会用到=>这个符号,但是大家理解过其中的具体用法吗?

=>主要有两方面的作用,一个限制属性状态,另一个简化匿名委托和Lambda


用法一:定义只读属性

  1. public class ManPeople {     public string Sex => "男";
  2.     public string Name { get; set; }}
  3. public class WomanPeople {    public string Sex => "女";
  4.     public string Name { get; set; }}

public string Sex => "男";

这里=>的用法相当于 { get; } = 即:将Sex字段设置为了只读属性,同时进行了赋值。

public string Sex { get;  } = "男"


用法二:Lambda表达式,匿名委托

例如定义一个委托:
delegate int DeMethod(int a, int b);
再定义一个方法:
int Add(int a, int b)
{
return a + b;
}
我可能需要这样通过委托调用方法:
DeMethod m += Add;
Console.WriteLine(m(2, 3));


采用 C# 2.0 的匿名方法语法:
DeMethod m += delegate(int a, int b) { return a + b; };
Console.WriteLine(m(2, 3));


采用C#3.0  Lambda 表达式:
DeMethod m += (a ,b) => a + b;
Console.WriteLine(m(2, 3));
可以省去方法的定义。
实际上, Lambda 表达式只是简化了匿名方法的语法而已。


最后C#中 += (s, e) => 这些字符什么意思

  1. public MainWindow()
  2. {
  3. InitializeComponent();
  4. this.Loaded += (s, e) => InitSomeConfig();
  5. this.Unloaded += (s, e) => this.Value= null;
  6. }

在上面的代码中,+=是在委托链上增加一个委托,(s,e) =>是一个lambda表达式,这个表达式创建一个委托,委托处理的主体就是=> 后面的部分。

其实这个写法相当于
this.Loaded += new EventHandler(Form_Loaded);

private void Form_Loaded(object sender,   EventArgs e) {
    InitSomeConfig ();
}

    该文章知识作为个人笔记,大部分知识来源于书本或网络整理总结;

</article>

标签:string,委托,C#,Sex,实用,int,详解,public
From: https://www.cnblogs.com/mkmkbj/p/16880323.html

相关文章

  • C++类中使用静态成员变量
    如果需要在类中使用静态成员变量,需要在头文件和.cpp文件各定义一次例如,有StaticTest.h和StaticTest.cpp两个文件StaticTest.h:classStaticTest{private:static......
  • 2022-11-10 Acwing每日一题
    本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我......
  • function函数
    function函数初识函数,通俗来讲函数是封装重复执行的代码块,函数的使用分为两个步骤,声明函数和调用函数(缺一不可)声明函数:function函数名(){函数体,代码块}:注意点,声明函数的关......
  • RSA后台加密,前端解密--服务端跳转的时候会将“+”号替换成空格,所以用URLEncoder.encod
    RSA后台加密,前端解密1遇到的问题,使用fastJson对java对象转json,json的格式空值是null,导致无法解密解决,使用net.sf.json将java对象转的json  JSONObect..fromOb......
  • leetcode441
    排列硬币Category Difficulty Likes Dislikesalgorithms Easy(45.89%) 248 -TagsCompanies你总共有n枚硬币,并计划将它们按阶梯状排列。对于一个由k行组成的阶梯,......
  • Android实战简易教程-第四十四枪(Ripple Effect-为控件增加涟漪效果)
    最近发现了一款可以为控件增加涟漪效果的github项目,可以提升应用的逼格啊,大家不妨引入到自己的项目中。该项目本身是androidstudio下面编译,我改成了eclipse下可以运行的项......
  • python报错 'int' object has no attribute 'randint'
    先看我的代码importrandom##随机生成[1,10)步长为2random=random.randrange(1,10,2)print(random)r=random.randint(0,10)print(r)print(random.randint(......
  • 快速批量删除 Salesforce ApexLogs 或者其他对象
    实际开发中,有时候ApexLog会超出限制,系统就会提示,由于Salesforce不支持下面这种方式delete[SELECTIdFROMApexLog];这时如果想删除这些数据,有两种界面化方式:在......
  • C#中调试和错误的处理
    正常模式下的调试1,在vs中使用Console.Write(或者WriteLine)方法向控制台输出变量的值,通过这种形式来观察变量的值是否符合预期。2,在Unity中可以使用Debug.Log(“”)......
  • cisco ipsecvpn
      Router0Router(config)#routeospf1#配置OSPF保证所有设备互通Router(config-router)#network192.168.10.00.0.0.255area0Router(config-router)#network1......