返回这个而不是 void 有什么缺点吗?

2023-12-23

假设不是返回 void 方法,而是返回对该类的引用,即使它没有任何特定的语义意义。在我看来,它会给你更多关于如何调用方法的选择,允许你以类似流畅界面的风格使用它,而且我真的想不出任何缺点,因为你不需要做任何事情与返回值(甚至存储它)。

因此,假设您想要更新一个对象,然后返回其当前值。 而不是说

myObj.Update();
var val = myObj.GetCurrentValue();

你将能够将这两行结合起来说

var val = myObj.Update().GetCurrentValue();

EDIT:我一时兴起问了下面的问题,回想起来,我同意这可能是不必要的且复杂的,但是我关于返回这个而不是无效的问题仍然成立。

与此相关的是,你们认为让该语言包含一些新的语法糖怎么样:

var val = myObj.Update()<.GetCurrentValue();

该运算符的优先级较低,因此 myObj.Update() 将首先执行,然后对 myObj 调用 GetCurrentValue(),而不是 Update 的 void 返回。

本质上,我想象一个运算符会说“在左侧第一个有效对象上调用运算符右侧的方法”。有什么想法吗?


我认为作为一般政策,它根本没有意义。这种方式的方法链接可以与正确定义的接口一起使用,但只有在具有语义意义时才是合适的。

你的例子是一个不合适的主要例子,因为它没有语义意义。

同样,对于一个设计得当的流畅界面来说,你的语法糖是不必要的。

流畅的接口或方法链can工作得很好,但需要仔细设计。

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

返回这个而不是 void 有什么缺点吗? 的相关文章

随机推荐

  • sys.getsizeof 的深层版本[重复]

    这个问题在这里已经有答案了 我想计算一个对象使用的内存 sys getsizeof很好 但是很浅 例如 在列表上调用 它不会包括列表元素占用的内存 我想写一个通用的 深度 版本sys getsizeof 我知道 深 的定义存在一些含糊之处
  • setLayoutParams 第二次不起作用

    我编写了以下代码 首先增加 ImageView 的大小 并在 100 毫秒后减小同一 ImageView 的大小 但是 此代码会增加 ImageView 的大小 但不会减小其大小 或者 100 毫秒延迟后的代码不会影响 imageView
  • Winform根目录路径。又如何!

    大家好 首先为问这样一个简单但多余的问题表示歉意 但似乎我的情况有点不同 谷歌搜索未能提供答案 我有一个包含 2 个项目的解决方案 即 proj1 和 proj2 其中 proj1 是 winform 应用程序 proj2 是类库应用程序
  • ConcurrentHashMap put 与 putIfAbsent

    Java Docs http docs oracle com javase 1 5 0 docs api java util concurrent ConcurrentHashMap html putIfAbsent 28K 20V 29说
  • 如何将字典列表输出到 Excel 工作表?

    我有一个名为 玩家 的列表 其中包含字典 它看起来像这样 players dailyWinners 3 dailyFreePlayed 2 user Player1 bank 0 06 dailyWinners 3 dailyFreePla
  • delphi 每 x 秒执行一次操作

    我试图每 x 秒执行一个函数 或过程 我到处寻找 但似乎从未找到适合我需求的东西 我的应用程序基本上从网络获取数据 我想制作一个自动刷新复选框 假设用户选中该框 我希望应用程序每 5 秒调用一次该函数 Thanks Use a TTimer
  • 获取 Kubernetes 中字段引用列表的方法

    在 kubernetes 中 我们可以轻松地通过环境变量公开某些参数和值 这些示例可以是节点 IP 容器 uid 等 Example name POD ID valueFrom fieldRef fieldPath metadata uid
  • Django 1.4 未知命令:“runserver”

    我的 python 路径中的某些内容肯定已更改 因为现在我无法运行 python app manage py runserver 我得到的输出是 Unknown command runserver Type manage py help f
  • F# 管道第一个参数

    是否可以将第一个参数传递到多参数函数中 例如 date 20160301 可以管道吗date into DateTime ParseExact yyyyMMDD CultureInfo InvariantCulture 正如 yuyoyup
  • SQLite Select 语句的更好性能

    我正在开发一个 Iphone 应用程序 用户可以在搜索栏中输入任何字符串并按下搜索按钮 之后应该会出现一个结果列表 在我的 SQLite 中 我有四列 a b c d 假设它们具有以下值 Dataset 1 a code1 b report
  • 检测icecast服务器的xslt实现中node-set()函数的可用性

    Icecast 包含一个基于的 XSLT 实现libxslt http xmlsoft org XSLT from xmlsoft http xmlsoft org 我想知道是否支持节点集 http www exslt org exsl f
  • Perl 模块知道它安装在哪里吗?

    我已经开始创建一个包含默认电子邮件模板的 Perl 包 清单看起来像这样 SendMyEmail pm SendMyEmail defualt email tt 目前我知道模块 和模板 在哪里 但模块本身知道它在磁盘上的位置吗 那么 如果没
  • 如何在 Go 中将 byte/uint8 数组编组为 json 数组?

    我有一个结构体 uint8会员和我正在写它json Marshal 问题是 它正在解释uint8s as chars 并且它输出一个字符串而不是数字数组 如果它是一个 我可以让它工作 int 但如果可以避免的话 我不想分配和复制这些项目 我
  • 无法将 module/mod_proxy_wstunnel.so 加载到服务器中

    最近我需要在apache2上集成一个websocket服务器 我发现apache2 4已经支持了websocket模块 mod proxy wstunnel http httpd apache org docs 2 4 mod mod pr
  • 从分叉终端运行 xcodebuild

    我正在尝试为 iPhone 应用程序设置自动构建服务器 我希望能够每晚进行临时测试版构建 以便测试人员可以跟踪开发情况 我已经成功设置了 xcode xcode 来执行即席构建 我还可以从命令行启动构建 xcodebuild configu
  • 尝试从空对象引用上的字段“android.view.View androidx.recyclerview.widget.RecyclerView$ViewHolder.itemView”读取

    我正在制作一个从 sql 获取数据并将其放入回收视图中的应用程序 我首先在列表视图中尝试过它 但我发现在回收视图中更容易 它基本上就像一个聊天系统应用程序 当我将数据添加到回收视图它在 logcat 中给了我这个错误 java lang N
  • GCP 堆栈中的 AWS SNS 等效项

    因此 我们花了近 6 个月的时间将当前的应用程序堆栈从 AWS 迁移到 GCP 现在我们陷入了 AWS SNS 部分 显然 GCP 堆栈中似乎没有任何服务可以简单地提供 SNS 的替代品 还是我错过了什么 现在 GCP 上的一切都运行得很好
  • 在 antd Form + ReactJs 中使用 antd Tooltip

    如果我输入无效的邮件 ID 我需要使用 antd 工具提示显示 无效的电子邮件 如何在ReactJS antd Form中使用它 我现在使用的代码是 div div
  • Azure 网站和 Azure Web 角色之间有什么区别

    新的和新的有什么实质性的区别 Azure 网站 https www windowsazure com en us home scenarios web sites 以及 ASP NET MVC 应用程序的传统 Azure Web 角色 我为
  • 返回这个而不是 void 有什么缺点吗?

    假设不是返回 void 方法 而是返回对该类的引用 即使它没有任何特定的语义意义 在我看来 它会给你更多关于如何调用方法的选择 允许你以类似流畅界面的风格使用它 而且我真的想不出任何缺点 因为你不需要做任何事情与返回值 甚至存储它 因此 假