C#
- Русское название:
- Си-шарп
- Дата создания:
- 2001
- Создан под влиянием:
- Повлиял на:
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .cs
- Диалекты:
- Реализации и версии (свернуть все | развернуть все):
C# (произносится си-шарп) — язык программирования, сочетающий объектно-ориентированные и контекстно-ориентированные концепции. Разработан в 1998—2001 годах группой инженеров под руководством Андерсa Хейлсбергa в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств вроде Visual Studio.
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML. Переняв многое от своих предшественников — языков C++, Delphi, Modula и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++) или вывода типов (в отличие от Haskell).
Элементы синтаксиса:
Комментарий до конца строки | // |
---|---|
Комментарии, которые не могут быть вложенными | /* ... */ |
Регистрозависимость | да |
Регулярное выражение идентификатора переменной | [_a-zA-Z][_a-zA-Z0-9]* |
Присваивание значения переменной | = |
Объявление переменной | type variable |
Объявление переменной с присваиванием значения | type variable = value |
Группировка выражений | ( ... ) |
Блок | { ... } |
Тождественное равенство | == |
Тождественное неравенство | != |
Сравнение | < > <= >= |
Определение функции | returntype f (type1 p1, type2 p2, ... ) { ... } |
Вызов функции | f(a, b, ...) |
Вызов функции без параметров | f() |
Последовательность | ; |
Если - то | if (condition) ... |
Если - то - иначе | if (condition) ... else ... |
Бесконечный цикл | while (!0) ... |
Цикл с предусловием | while (condition) ... |
Цикл с постусловием | do ... while (!condition) |
Цикл for - next для диапазона целых чисел с инкрементом на 1 | for (int i = 1; i <= 10; i++) ... |
Цикл for - next для диапазона целых чисел с декрементом на 1 | for (int i = 10; i > 0; i--) ... |
IDE/Редакторы:
Примеры:
Факториал:
Пример для версий .NET 1.0, .NET 2.0, Mono 1.2.4, gmcs 2.0.1Используется рекурсивное определение факториала.
using System;
class Program
{
static long Factorial(int n)
{
if (n == 0)
return 1;
else
return n * Factorial(n - 1);
}
static void Main(string[] args)
{
for (int i = 0; i < 17; i++)
Console.WriteLine("{0}! = {1}",i,Factorial(i));
}
}
Hello, World!:
Пример для версий gmcs 2.0.1using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
Числа Фибоначчи:
Пример для версий gmcs 2.0.1Используется рекурсивное определение чисел Фибоначчи.
using System;
class Program
{
static long Fibonacci(int n)
{
if (n < 3)
return 1;
else
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
static void Main(string[] args)
{
for (int i = 1; i < 17; i++)
Console.Write("{0}, ", Fibonacci(i));
Console.WriteLine("...");
}
}
Квадратное уравнение:
Пример для версий gmcs 2.0.1using System;
class Program
{
static void Main(string[] args)
{
int A, B, C, D;
try
{ Console.Write("A = ");
A = Convert.ToInt32(Console.ReadLine());
Console.Write("B = ");
B = Convert.ToInt32(Console.ReadLine());
Console.Write("C = ");
C = Convert.ToInt32(Console.ReadLine());
}
catch
{ Console.WriteLine("Invalid input");
return;
}
if (A == 0)
{ Console.WriteLine("Not a quadratic equation.");
return;
}
D = B * B - 4 * A * C;
if (D == 0)
Console.WriteLine("x = {0}", -B / 2.0 / A);
else if (D > 0)
Console.WriteLine("x1 = {0}\nx2 = {1}", (-B + Math.Sqrt(D)) / 2 / A, (-B - Math.Sqrt(D)) / 2 / A);
else
Console.WriteLine("x1 = ({0},{1})\nx2 = ({0},-{1})", -B/2.0/A, Math.Sqrt(-D)/2/A);
}
}
CamelCase:
Пример для версий gmcs 2.0.1Первая строка метода Main
читает из консоли строку и переводит ее в нижний регистр. Вторая строка заменяет все последовательности из 1 и более не-буквы пробелами. Третья и четвертая строки получают объект класса TextInfo
и используют его для того, чтобы перевести строку в Title Case (каждое слово начинается с большой буквы). Наконец, из полученной строки удаляются все пробелы (методом замены строки из одного пробела на пустую строку), и результат выводится на печать.
using System;
using System.Globalization;
using System.Text.RegularExpressions;
public class Program
{ public static void Main(string[] args)
{ string text = Console.ReadLine().ToLower();
text = Regex.Replace(text,"([^a-z]+)"," ");
TextInfo ti = new CultureInfo("en-US",false).TextInfo;
text = ti.ToTitleCase(text);
text = text.Replace(" ","");
Console.WriteLine(text);
}
}
CamelCase:
Пример для версий gmcs 2.0.1Этот пример использует только регулярные выражения. Первое обращение к ним заменяет все максимальные последовательности букв в строке на результат применения к ним функции CapitalizePart
, то есть переводит первый символ в верхний регистр. Второе — заменяет все не-буквы на пустые строки.
using System;
using System.Text.RegularExpressions;
class Program
{ static string CapitalizePart(Match m)
{ string x = m.ToString();
return char.ToUpper(x[0]) + x.Substring(1, x.Length-1);
}
static void Main()
{ string text = Console.ReadLine().ToLower();
string cc = Regex.Replace(text, "([a-z]+)", new MatchEvaluator(Program.CapitalizePart));
cc = Regex.Replace(cc, "[^a-zA-Z]+", string.Empty);
Console.WriteLine(cc);
}
}
Hello, World!:
Пример для версий Microsoft Cω compiler 1.0.2using System;
class Programm
{
static void Main()
{
Console.WriteLine("Hello World!");
}
}
Комментарии
]]>blog comments powered by Disqus
]]>