Добрый день. Только разбираюсь с c# поэтому такой вопрос. На старом компе на котором есть только net 3.5 b 4.0.3019 надо запустить код который использует оператор ?. для того чтобы обращение к несуществующему объекту не выкидывало исключение, а возвращало просто null.
Код например такой:
using System;
class test
{
public static void Main(string[] args)
{
try
{
string s = null;
Console.WriteLine("len: " + s?.Length);
}
catch (Exception e)
{
Console.WriteLine("Error : " + e.Message);
}
}
}
Этот код нормально компилится в VS2019 с target framework: .NET Framework4...
А если же я пытаюсь его скомпилить через командную строку:
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe main.cs
то выводятся ошибки:
main.cs(20,34): error CS1525: Недопустимый терм "." в выражении
main.cs(20,35): error CS1003: Синтаксическая ошибка, ожидалось ":"
main.cs(20,41): error CS1002: ожидалась ;
main.cs(20,41): error CS1525: Недопустимый терм ")" в выражении
Я как понимаю csc.exe ругается как раз на оператор ?.
Так почему в студии я могу его использовать а csc.exe — нет?