O'Reilly logo

Mastering F# by Suhaib Fahad, Alfonso García-Caro Núñez

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Interop with C#

Some F# features require a bit of interop code to make it easily consumable in C#.

Optional parameters

We can define a C# function by writing the following piece of code:

    public class CSharpExample { 
        public static int Add(int x, int y = 1) { 
            return x + y; 
        } 
    } 

We can call the function in C# by writing the following piece of code:

    var a = CSharpExample.Add(10) 
    var b = CSharpExample.Add(10, 20); 

If we try the same with F#, it will work as well:

    let a = CSharpExample.Add(10) 
    let b = CSharpExample.Add(10, 20) 

Now, the other way around; a method defined in F# using the F# flavor of optional parameters is as follows:

    type FSharp =  
        static member Add(x, ?y) =  
            let y = defaultArg y 1  
            x + y  

We can happily use it like this in F#:

 let a = FSharp.Add(10) ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required