VS2017 具有新的 getter/setter 语法:如何在 setter 中编写多行?/ [关闭]

2023-11-27

我使用的是.NET Framework 4.5.2,VS2017。 VS2017 为 getter 和 setter 提供了新的语法。现在带有 getter setter 的属性如下所示:

public string Name { get => _name; set => _name = value; }

我必须写下面的属性。如何使用 lambda 表达式 set=> 编写设置器?

public int EmployeeNumber
    {
        get => _employeeNumber;
        set { _employeeNumber = value; OnPropertyChanged("EmployeeNumber");}
    }

比如这样的事情:

public int EmployeeNumber
{
   get => _employeeNumber;
   set =>{ _employeeNumber = value;OnPropertyChanged("EmployeeNumber"); }
}

对于上述设置器,我收到 3 个错误:

CS1525: Invalid expression term {
CS1002: ; expected
CS1014: A get or set accessor expected

好吧,让我们再回顾一下这个问题。你想写

public int EmployeeNumber 
{
    set 
    { 
        _employeeNumber = value;
        OnPropertyChanged("EmployeeNumber");
    } 
}

像这样:

public int EmployeeNumber 
{
    set => 
    { 
        _employeeNumber = value;
        OnPropertyChanged("EmployeeNumber");
    } 
}

问题是why?关于表达式主体函数成员的全部要点是使事情更加简洁和可读,避免大括号、返回关键字等:

public int Foo => foo

代替,

public int Foo { return foo; }

您尝试做的事情并没有使其更具可读性,并且添加了两个无用的额外标记。这似乎是一笔可怕的讨价还价。

作为一般规则,您不应该使用(或不能使用)=>右侧代码时的语法:

  1. 不返回任何内容(抛出异常是异常,双关语)
  2. 由多个表达式组成。
  3. 是不是因为它产生的副作用。

当然,规则 3 是我自己的,我不知道关于这个问题的任何编码风格建议,但我倾向于避免这种语法,除非我正在处理不会产生副作用的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2017 具有新的 getter/setter 语法:如何在 setter 中编写多行?/ [关闭] 的相关文章

随机推荐

  • 在表单中提交禁用的输入无法获取值

    形式如下
  • GTK# .NET 应用程序,无需单独安装 GTK#

    我在 Windows 上使用 MonoDevelop 开发 C 应用程序 发现我喜欢使用 GTK 而不是 winforms 然而 据我所知 到目前为止 您不能仅仅将 GTK 运行时嵌入到应用程序中 问题是我不想要求我正在开发的应用程序的最终
  • MySQL可以替换多个字符吗?

    我正在尝试替换 MySQL 字段中的一堆字符 我知道 REPLACE 函数 但它一次只能替换一个字符串 我看不到任何合适的功能在手册中 我可以一次替换或删除多个字符串吗 例如 我需要用破折号替换空格并删除其他标点符号 您可以链接 REPLA
  • 更新面板错误:在 UpdatePanel 中找不到 ID 为“xxx”的控件

    我有一个复合下拉日历用户控件 由文本框和日历图像以及验证控件组成 我在用户控件上公开了一个名为 TextBox 的属性 该属性返回对控件内使用的文本框的引用 这是用户输入日期的文本框 在 ASPX 页面中 我有一个此用户控件的实例
  • 传递可变参数模板参数的位置

    我想创建一个采用可变数量模板参数的函数 稍后 使用这些参数 函数应该像这样传递它们的位置 template
  • 长ID的性能

    我想知道这个问题已经有一段时间了 在 CouchDB 中 我们有一些相当日志的 ID 例如 000ab56cb24aef9b817ac98d55695c6a 现在 如果我们正在搜索该项目并浏览由视图创建的树结构 看起来一个简单的整数作为 i
  • 为什么派生类不能在此代码中调用受保护的成员函数?

    include
  • 线程和文件写入

    我有一个使用 20 个线程的 java 程序 他们每个人都将结果写入一个名为output txt 我总是得到不同数量的行output txt 会不会是线程同步的问题 有办法处理这个问题吗 难道是线程同步的问题 Yes 有办法处理这个吗 是的
  • 如何构建使用 CMake FetchContent 下载的外部库?

    我有一个依赖于外部库 例如 SDL 的程序 我希望 CMake 为我处理这种依赖性 所以我正在研究FetchContent 据我了解 该模块只是下载源代码 以便可以在以下位置获得有关外部库的信息配置时间 例如 include FetchCo
  • SVN:发布分支和外部?

    我们有两个针对同一客户的网站 主 www 网站和另一个位于单独服务器上的电子商务网站 它们使用共享的代码部分 各种功能 样式 javascript 等 目前 我们通过将共享代码作为 SVN 中的单独项目 在同一存储库中 并使用 svn ex
  • Python3中如何设置文件权限?

    Python 自己的文档非常简洁地介绍了如何使用类似的函数os fchmod os chmod 我对这样的数字感到困惑777和类似的表达方式stat S IWRITE stat S IEXEC 是什么mode 0o777我在一些函数中看到o
  • 首先在 EF 4.1 代码中映射关联表

    我不确定如何映射下面的表格EF 4 1 code first以及我需要哪些对象来代表表格 我如何检索产品规格列表 我目前只有一个Product class Products Table Id Name IsActive ProductSpe
  • 如何正确配置 Cocoa Pods 项目?

    在我过去的一些项目中 Cocoa Pods 的配置不正确 这会导致一些不良情况 例如项目导航器中需要重复的 Cocoa Pod 项目 或者必须将 pod 文件签入版本控制 如何正确安装 Cocoa Pods 并验证我的目录结构和项目导航器结
  • 如何使用 API Gateway 调用 AWS Step Function

    如何使用 API Gateway POST 请求以及 Step Function 的请求 JSON 负载调用 AWS Step Function 1 创建阶跃函数 非常明显 我想如果您正在阅读本文 您就知道该怎么做 否则 您可以查看此处的文
  • 使用 LINQ 生成填充随机数的随机大小集合

    我现在正在学习 LINQ 我想知道是否有任何方法可以使用它来实际生成列表 而不仅仅是查询已经生成的列表 所以我有以下代码 使用 for 循环来生成随机大小的整数列表并用随机数填充它 有没有办法将其转换为 LINQ var ret new L
  • 当另一个表中存在匹配行时更新行

    仅当另一个表中存在匹配行时 对于主表中该列当前为空的所有行 我才需要将表上的字段更新为 true 这是我想要实现的目标的描述 UPDATE LenqReloaded dbo Enquiry A SET ResponseLetterSent
  • 限制 .net 应用程序的内存使用

    有没有办法限制 NET 应用程序使用的内存量 看看进程调控器 http lowleveldesign wordpress com 2013 11 21 set process memory limit with process govern
  • 如何在NumericUpDown控件中显示空值?

    我有一个 Windows 窗体应用程序 其中包括NumericUpDown控制与Minimum and Maximum相应地将值设置为 50 80 并执行步骤 1 当表单加载时NumericUpDown显示 50 我知道NumericUpD
  • r - 将输出从 sf::st_within 转换为向量

    我尝试使用 R 中的 sf 包来查看 sf 对象是否在另一个 sf 对象内st within功能 我的问题是这个函数的输出是稀疏几何二进制谓词 sgbp我需要一个向量作为输出 以便我可以使用dplyr之后打包进行过滤 这是一个简化的示例 o
  • VS2017 具有新的 getter/setter 语法:如何在 setter 中编写多行?/ [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我使用的是 NET Framework 4 5 2 VS2017 VS2017 为 getter 和 setter 提供了新的语法 现在带有 getter setter 的属性如下所示