gpt4 book ai didi

c# - 通过在 C# 中返回此指针/引用而不赋值来链接命令

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:22 25 4
gpt4 key购买 nike

这主要是一个语法问题。这是一个相关的线程,显示了实现相同结果的不同替代方案: Method-Chaining in C#

现在,在 C++ 中,可以通过使方法返回指向该方法所属对象的指针来在对象上链接命令。

我正在寻找的语法是:

foo.Transform(bar).TransformDifferently(yay);

在 C# 中,如果我返回此值,则会复制该值(编辑:一半不正确,请阅读答案)。我认为我不能返回引用或指针,可以吗?有没有其他方法可以实现相同的语法?

目前我的解决方案是将结果分配给我的对象,如下所示:

foo = foo.Transform(bar).TransformDifferently(yay);

但这不是最佳解决方案,因为它既慢(对我来说无关紧要)又更冗长。如果有任何正确方向的指示,我将非常高兴!

最佳答案

In C#, if I return this, the value is copied

这不是真的,至少对于类来说是这样。 C# 中的类是引用类型,这意味着该类型的每个变量实际上都是一个引用,因此返回 this 只是返回一个对当前实例的引用

所以要做到这一点,在 C# 中本质上是相同的:

public class Foo
{
public Foo Transform(Bar bar)
{
// transform
return this;
}

public Foo TransformDifferently(Yay yay)
{
// transform
return this;
}
}

对于值类型,它应该返回该类型的一个新实例。值类型应该是不可变的,因此如果您正确设计了 struct,则应该没有修改原始值的方法。 Transform 应该改为修改结构的新版本。

关于c# - 通过在 C# 中返回此指针/引用而不赋值来链接命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17675066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com