C#扩展方法 – 返回调用对象

我是Extension Methods的新手,并探索他们可以做些什么.

是否可以在没有特定赋值的情况下为调用对象分配输出

这是一个简单的例子来解释:

public static string ExtensionTest(this string input)
{
    return input + " Extended!";
}

在以下示例中……

var foo = "Hello World!";

var foo2 = foo.Extensiontest(); // foo2 = "Hello World! Extended!"

foo.Extensiontest(); // foo = "Hello World!"

foo = foo.Extensiontest(); // foo = "Hello World! Extended!"

…有没有办法让foo.Extensiontest()导致“Hello World!Extended!”没有特别指定foo = foo.Extensiontest()

解决方法

不,但不起作用的原因与字符串的不变性有关,而与扩展方法无关.

如果你有一个班级:

public class SomeClass
{
     public int Value {get; set;}
}

并且扩展方法

public static void DoIt(this SomeClass someClass)
{
    someClass.Value++;
}

会产生以下影响:

var someClass = new SomeClass{ Value = 1 };
someClass.DoIt();

Console.WriteLine(someClass.Value); //prints "2"

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...