如何实现方法链?

2024-03-20

在 C# 中,如何实现在自定义类中链接方法的能力,以便可以编写如下内容:

myclass.DoSomething().DosomethingElse(x); 

etc...

Thanks!


链接是从现有实例生成新实例的一个很好的解决方案:

public class MyInt
{
    private readonly int value;

    public MyInt(int value) {
        this.value = value;
    }
    public MyInt Add(int x) {
        return new MyInt(this.value + x);
    }
    public MyInt Subtract(int x) {
        return new MyInt(this.value - x);
    }
}

Usage:

MyInt x = new MyInt(10).Add(5).Subtract(7);

您还可以使用此模式来修改现有实例,但通常不建议这样做:

public class MyInt
{
    private int value;

    public MyInt(int value) {
        this.value = value;
    }
    public MyInt Add(int x) {
        this.value += x;
        return this;
    }
    public MyInt Subtract(int x) {
        this.value -= x;
        return this;
    }
}

Usage:

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

如何实现方法链? 的相关文章

  • 是否可以从 C++ 应用程序调用 C# 应用程序?

    我是一名编程学生 现在我已经上了两门 C 课程 这个学期我将参加我的第一门 C 课程 出于好奇 是否可以从 C 应用程序调用 C 应用程序 如果是的话 是否还可以检查运行该程序的计算机是否具有 NET框架 我只是很好奇 我想如果可能的话 这
  • 并行化斐波那契序列生成器

    我正在学习并行化 在一项练习中 我得到了一些我应该提高性能的算法 其中之一是斐波那契数列生成器 array 0 0 array 1 1 for q 2 q lt MAX q array q array q 1 array q 2 我怀疑 这
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 如果 JSON.NET 中的值为 null 或空格,则防止序列化

    我有一个对象需要以这样的方式序列化 即 null 和 空白 空或只是空格 值都不会序列化 我不控制对象本身 因此无法设置属性 但我知道所有属性都是字符串 环境NullValueHandling显然 忽略 只能让我找到解决方案的一部分 它 似
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 将设置函数(setter)标记为 constexpr 的目的是什么? [复制]

    这个问题在这里已经有答案了 我无法理解将 setter 函数标记为的目的constexpr 自 C 14 起这是允许的 我的误解来自以下情况 我使用 constexpr c tor 声明一个类 并且我将通过创建该类的 constexpr 实
  • 将下拉列表与字典绑定

    我将字典绑定到下拉列表 举例来说 我的字典中有以下项目 Test1 123 Test2 321 我希望下拉文本采用以下格式 Test1 Count 123 Test2 Count 321 我沿着以下路径走 但没有运气 MyDropDown
  • 将日期时间转换为指定格式

    我有这个日期格式yy MM dd HH mm ss ex 12 02 21 10 56 09 问题是 当我尝试使用以下代码将其转换为不同格式时 CDate 12 02 21 10 56 09 ToString MMM dd yyyy HH
  • C# 编译器数字文字

    有谁知道 C 编译器数字文字修饰符的完整列表 默认情况下 声明 0 使其成为 Int32 声明 0 0 使其成为 Double 我可以在末尾使用文字修饰符 f 来确保某些内容被视为 Single 例如像这样 var x 0 x is Int
  • 在 C++11 中移出 stdpriority_queue 的元素

    最小的工作示例 include
  • 通过 C# Mailkit / Mimekit 发送电子邮件,但出现服务器证书错误

    Visual Studio 2015 中的 0 代码 1 我正在使用 Mailkit 最新版本 1 18 1 1 从我自己的电子邮件服务器发送电子邮件 2 电子邮件服务器具有不受信任的自签名证书 3 我在代码中添加了以下两行 以忽略服务器证
  • 时间:2019-03-17 标签:c++fstream并发访问

    如果从不同的进程 线程同时访问文件会发生什么 据我所知 没有锁定文件的标准方法 只有操作系统特定的功能 就我而言 文件将被经常读取而很少写入 现在如果A打开一个文件进行读取 ifstream 并开始读取块 和B打开相同的文件进行写入 ofs
  • 将错误代码映射到 C++ 中的字符串

    将错误代码从枚举映射到字符串的更有效方法是什么 在 C 中 例如 现在我正在做这样的事情 std string ErrorCodeToString enum errorCode switch errorCode case ERROR ONE
  • ALTER TABLE ... ADD CONSTRAINT 失败时将事务回滚到保存点

    有没有办法在事务中添加检查约束and如果失败回滚到以前的保存点 而不是回滚整个事务 就我而言 当 ALTER TABLE ADD CONSTRAINT 命令失败时 事务无法回滚到保存点 尝试这样做会引发 InvalidOperationEx
  • C# 中的 C/C++ 代码编译器

    在 C 中 我可以使用下面的代码编译 VB 和 C 代码 但无法编译 C C 代码 有什么办法可以做到这一点吗 C 编译器 public void Compile string ToCompile string Result null st
  • 无法在 C# 中为 EventArgs 分配使用派生类型的事件处理程序

    所以我有一个事件声明如下 public event EventHandler OnChangeDetected 然后我有以下处理程序被分配给该事件 myObject OnChangeDetected OnTableChanged 我的理解是
  • C 中使用 getrandom 实现随机浮点数

    我试图生成一个介于 0 和 1 之间的随机浮点数 无论是在 0 1 还是 0 1 对我来说都不重要 网上关于此的每个问题似乎都涉及rand 呼叫 播种time NULL 但我希望能够每秒多次调用我的程序 并每次都获得不同的随机数 这引导我找
  • 无法识别解决方案文件夹中的 Visual Studio 2017 Nuget.config

    我在使用 Visual Studio 2017 时遇到问题 新的解决方案不断引用 C Users yopa AppData Roaming NuGet Nuget config 中意外位置的 Nuget config 文件 我已将 nuge
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost

随机推荐

  • 为什么现实世界中我们需要 Deque 数据结构? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 谁能给我举一个情况的例子Deque https en wikipedia org wiki Double ended queue需要数
  • Silverlight-Facebook 应用程序的服务器接口单元测试

    我有一个 Silverlight 4 客户端在 Google App Engine 上托管的 Facebook 页面上运行 它正在使用gminifb http blog patrickcrosby com 2008 04 20 Write
  • 如何通过 OAuth2 从 vKontakte (VK) 获取访问令牌?

    我正在尝试通过 vKontakte 俄罗斯社交网络 获取访问令牌他们的 OAuth2 API https vk com dev auth mobile 这就是我拨打电话的方式 https oauth vk com authorize cli
  • 录音应用程序的 iOS 多任务处理

    我正在编写一个录制音频的应用程序 我正在研究在录音时支持多任务处理 在后台 的可行性 答案似乎是一个no根据我到目前为止所读到的内容 特别是因为该程序旨在释放切换时正在使用的任何系统资源 所以我想知道 是否可以让用户切换到 iOS 中的另一
  • 我的网络应用程序仅适用于 META-INF 而不是 WEB-INF(包括 beans.xml)。为什么?

    我正在研究 java 中的依赖注入示例 大多数文档都强调我必须放置一个空的beans xml in META INF 如果是 jar 应用程序 WEB INF 如果是 Web 应用程序 所以 我使用战争类型的包装 但是 我的应用程序只有在我
  • jQuery 模糊和 Enter 键

    我正在尝试根据输入的邮政编码使用谷歌地图动态更新 div 如果用户按 Tab 键离开输入框 id ZipCode 则它工作正常 但如果他们按 Enter 键 则不会模糊该字段 我在 onkeyup 上有一个变体 但一个事件调用另一个事件 结
  • 如何在android库中包含内部jar文件

    我正在尝试下载并运行现有的 android studio 项目 目前我收到错误 error package com google gson does not exist 需要gson的java文件位于主应用程序部分 这gson 2 8 1
  • 无法在 Eclipse 中对空手道模板项目运行 mvn 测试

    我克隆了空手道模板 即https github com karatelabs karate template https github com karatelabs karate template我能够在 Eclipse IDE 上运行测试
  • 当我在 C++ 中对未初始化的指针调用“delete”时会发生什么?

    假设我声明了一个 char 指针 并在没有调用 new 的情况下调用了它的 delete 这会导致问题吗 char myptr if condition do something involving myptr new char SIZE
  • 教义查询崩溃

    非常非常奇怪 我已经使用这种教义方法数百次了 我有一个简单的控制器 它以 id 作为参数 Doctrine 生成的查询是错误的并且崩溃 Security has role ROLE ADMIN return Response public
  • 是否可以在 SOAP Web 服务中创建只读元素?

    我有一个定义了只读属性的类 在我的代码中 我将其定义为仅具有 getter 的属性 我希望能够通过网络服务来回发送该对象 当我在服务中调用 Get 方法时 它将在服务端填充一个值 定义此属性后 我不希望 Web 服务的使用者能够设置 更改此
  • 什么是了解 ASP.NET 中的 web.config 的好资源?

    我修改 web config 当我HAVE TO 调试设置 会话状态设置等 但在这些情况下 一些教程或错误消息已经明确 打开 web config 并执行 XYZ 我想知道的是 它还能做什么 我现在以其他方式做的事情最好在 web conf
  • 使用NotificationListenerService检查对通知的访问

    我正在使用 gt 4 3NotificationListenerService访问通知 第一次启动时 我的应用程序会将用户带到 访问通知 系统面板 但只要禁用 访问通知 中我的应用程序的复选框 我就想将用户带到那里 我还没有找到isNoti
  • 将带有变量的文本文件导入python

    我的目标 我创建的程序的目的是让用户输入元素的名称 然后 python 读入一个外部文件 找到所请求元素分配的值 最后将该值打印出来 例如 gt gt gt helium 2 问题是我不知道如何让 python 解释如下所示的文本文件 hy
  • 如何生成Maven项目所有模块之间的依赖关系图?

    如何生成 Maven 项目的所有模块之间的依赖关系图 不包括 JUnit SLF4J 等第三方库 我找不到一种使用 m2eclipse 将所有模块包含到一个图中的方法 谢谢 If the 依赖图m2eclipse 的功能不能满足您的需求 也
  • mysql 用以前的值生成缺失的日期

    下面是一个具有稀疏日期的 mysql 表 col dt id value A1 2018 05 28 30 A1 2018 05 30 20 A1 2018 05 31 50 A1 2018 06 01 50 A1 2018 06 04 8
  • 将 .NET Standard 2.1 与 UWP 结合使用

    我今天犯了一个大错误 更新了一些 NuGet 库 它迫使我要么回滚一周的工作量 要么升级到 ASP NET Core 3 0 我讨厌使用非生产的东西 但我也不想理清这些库 所以我升级了 然后它迫使我重新定位 NET Standard 2 1
  • 如何使用 PDFBOX 检查完全嵌入和子集嵌入字体

    您好 我想使用 PDFBOX 检查 PDF 中字体的完全嵌入和子集嵌入 我尝试使用以下逻辑来检查 private boolean IsEmbedded Map
  • 如何更改 Bean Validation 中 ValidationMessages.properties 的位置

    默认情况下 ValidationMessages properties 可以位于我的类路径的根目录中 我可以更改此文件的位置 例如 com myapp Anything properties 吗 来自 JSR 303 规范 4 3 1 1
  • 如何实现方法链?

    在 C 中 如何实现在自定义类中链接方法的能力 以便可以编写如下内容 myclass DoSomething DosomethingElse x etc Thanks 链接是从现有实例生成新实例的一个很好的解决方案 public class