Программы на языке C# компилируются на сервере с помощью .NET 8.0 (.NET SDK 8.0.100 x64, C# 12). Компилятор запускается со следующими параметрами:
dotnet.exe csc.dll -optimize+ -define:ONLINE_JUDGE %1
Размер стека по умолчанию установлен равным 1 МБ.
Примеры решения задач
Вот пример решения задачи A + B на языке C#:
var tokens = Console.ReadLine().Split();
var a = int.Parse(tokens[0]);
var b = int.Parse(tokens[1]);
Console.WriteLine(a + b);
Далее приведен пример простого решения задачи Обратный корень на языке C#. Этот пример иллюстрирует некоторые возможности языка и не является самым эффективным. При посимвольном вводе можно добиться гораздо меньшего времени работы и объема использованной памяти.
System.Globalization.CultureInfo.DefaultThreadCurrentCulture =
System.Globalization.CultureInfo.InvariantCulture;
var result = Console.In.ReadToEnd()
.Split()
.Where(s => s != "")
.Select(double.Parse)
.Reverse()
.Select(Math.Sqrt);
foreach (var d in result)
Console.WriteLine($"{d:0.####}");
Ввод/вывод
Для ввода/вывода на C# не всегда достаточно стандартных методов Console.ReadLine
, String.Split
и Console.WriteLine
. В некоторых задачах потребуется собственная быстрая реализация разбора входных данных и форматирования выходных.
В некоторых задачах числа разделяются не ровно одним пробелом. Поэтому вместо
Console.ReadLine().Split()
следует использовать
Console.ReadLine().Split().Where(s => s != "")
Не забывайте, что культура по умолчанию может быть любой. Это важно, если вам требуется считать или вывести число с плавающей точкой: разделитель целой и дробной части может быть задан в системе как «.» или как «,». В настоящий момент на сервере настроен разделитель «.», однако это может измениться в будущем. Чтобы не сталкиваться с подобными проблемами, указывайте культуру явно при каждой операции ввода/вывода или установите культуру по умолчанию для всей своей программы:
System.Globalization.CultureInfo.DefaultThreadCurrentCulture =
System.Globalization.CultureInfo.InvariantCulture;
История версий
Имя |
С |
По |
Язык |
Среда |
C# .NET 2.0 |
31 декабря 2006 года |
8 февраля 2009 года |
C# 2.0 |
.NET Framework 2.0 |
C# .NET 3.5 |
8 февраля 2009 года |
4 августа 2010 года |
C# 3.0 |
.NET Framework 3.5 |
C# .NET 4.0 |
4 августа 2010 года |
21 сентября 2015 года |
C# 4.0 |
.NET Framework 4.0 |
VB .NET 4.0 |
18 февраля 2013 года |
1 сентября 2017 года |
VB 10.0 |
.NET Framework 4.0 |
C# .NET 4.5 |
21 сентября 2015 года |
1 сентября 2017 года |
C# 5.0 |
.NET Framework 4.5 |
C# .NET 4.7 |
1 сентября 2017 года |
1 сентября 2019 года |
C# 7.1 |
.NET Framework 4.7 |
C# .NET 4.7.2 |
1 сентября 2019 года |
1 сентября 2020 года |
C# 7.1 |
.NET Framework 4.7.2 |
C# .NET Core 3.1 |
1 сентября 2020 года |
22 января 2024 года |
C# 8.0 |
.NET Core 3.1.4 |
C# .NET 8 |
22 января 2024 года |
|
C# 12.0 |
.NET 8.0.0 |