Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Extension Methods - return calling object

I'm new to Extension Methods and exploring what they can do.

Is it possible for the calling object to be assigned the output without a specific assignment?

Here is a simple example to explain:

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

In the following examples ...

var foo = "Hello World!";

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

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

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

... is there any way to get foo.ExtensionTest() to result in "Hello World! Extended!" without specifically assigning foo = foo.ExtensionTest()

like image 261
Shevek Avatar asked Jan 26 '11 14:01

Shevek


People also ask

Bahasa C digunakan untuk apa?

Meskipun C dibuat untuk memprogram sistem dan jaringan komputer namun bahasa ini juga sering digunakan dalam mengembangkan software aplikasi. C juga banyak dipakai oleh berbagai jenis platform sistem operasi dan arsitektur komputer, bahkan terdapat beberepa compiler yang sangat populer telah tersedia.

C dalam Latin berapa?

C adalah huruf ketiga dalam alfabet Latin. Dalam bahasa Indonesia, huruf ini disebut ce (dibaca [tʃe]).

Bahasa C dibuat pertama kali oleh siapa dan tahun berapa?

Bahasa pemrograman C ini dikembangkan antara tahun 1969 – 1972 oleh Dennis Ritchie. Yang kemudian dipakai untuk menulis ulang sistem operasi UNIX. Selain untuk mengembangkan UNIX, bahasa C juga dirilis sebagai bahasa pemrograman umum.


1 Answers

No, but the reason that will not work has to do with the immutability of strings, and nothing to do with extension methods.

If instead you had a class:

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

And an extension method:

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

Would have the effect of:

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

Console.WriteLine(someClass.Value); //prints "2"
like image 67
Klaus Byskov Pedersen Avatar answered Oct 27 '22 00:10

Klaus Byskov Pedersen