Is there a Function type in C#?

c#, function, types

Solution

Yes, they're called delegates in .NET, not function types.

You use the reserved keyword `delegate` to define new ones, and there's plenty that are predefined in the class libraries.

To define one that matches your example:

public delegate void DoSomethingDelegate(Object param1, Object param2);

Then to assign it:

DoSomethingDelegate f = DoSomething;
f(new Object(), new Object());

There's also two generic types of delegate types defined in the base class library, one for methods that return a value, and one for those who doesn't, and they come with variations over how many arguments you have.

The two are `Func<..>` for methods that return a value, and `Action<..>` for methods that doesn't.

In your case, this would work:

Action<Object, Object> f = DoSomething;
f(new Object(), new Object());

Note that in this last case, you don't have to declare `DoSomethingDelegate`.

Problem

I like to know if in C# there is a Function type like in AS3 for example. I would like to do somnthing like this (but in C#): ``` private function doSomething():void { // statements } var f:Function = doSomething f() ```

Original source