Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# 4.0 project targeting earlier framework

Lets suppose if I have created a C# project which uses C# 4.0 features - optional parameter. What will happen if I select '.Net Framework 2.0' as a target framework? Will the compiler be intelligent enough to generate IL compatible with 2.0 on its own or will the Exe give runtime error when deployed on a machine that has only .Net framework 2.0?

like image 475
FIre Panda Avatar asked Feb 26 '26 03:02

FIre Panda


1 Answers

In the specific case of optional parameters, compatibility will work as default values to use are stored in the caller's assembly and not in the called assembly so compatibility with other assemblies is ensured. If it compiles, it will run.

Optional parameters are just a syntaxic sugar. The following code compiles and run for a target framework 2.0 :

internal class Program
{
    public static class DummyClass
    {
        public static string Bar(int b = 10, int a = 12)
        {
            return a.ToString();
        }
    }

    private static void Main(string[] args)
    {
        Console.WriteLine("{0}", DummyClass.Bar(a: 8));

        Console.ReadKey();
    }
}

Read a full explanation by Mr Botelho

like image 86
AlexH Avatar answered Feb 27 '26 20:02

AlexH



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!