On 14-06-2012 11:52, Regan Heath wrote:
On Thu, 14 Jun 2012 10:43:43 +0100, Gor Gyolchanyan
<gor.f.gyolchan...@gmail.com> wrote:

On Thu, Jun 14, 2012 at 10:46 AM, Jacob Carlborg <d...@me.com> wrote:
UFCS can be used to emulate adding new members/instance methods to a
class
or struct:

class Foo
{
}

void bar (Foo foo, int x) {}

auto foo = new Foo;
foo.bar(3);

Is it possible, somehow, to emulate adding new _static_ methods to a
class,
something like this:

void fooBar (/*something*/, int x) {}

Making this possible:

Foo.fooBar(4);

--
/Jacob Carlborg

I'd expect it to look like this:

void fooBar(Foo)(int x) {}

That looks too much like a template function to me. What about:

void fooBar(static Foo, int x) {}

static?

Oh boy, here we go again ... ;)


Note: no parameter name for the "static" Foo parameter (as it's not
really a parameter - simply a placeholder to indicate it's UFCS).


C# doesn't have static UFCS (called "extension methods" in C# parlance)
tho some people have wanted it:
http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/8ac0e6bf-c859-4cc4-919f-c80eedfccf63


I guess the reason it doesn't exist is that there is no technical reason
for it, all it gives you is a nicer syntax.

You can get fairly close with a custom static class, static method
taking an instance of the class you want to 'extend'.

R



--
Alex Rønne Petersen
a...@lycus.org
http://lycus.org

Reply via email to