微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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"

原文地址:https://www.jb51.cc/csharp/99056.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐