Наиболее популярные велосипеды

Когда-то все мы начинали изучение платформы .NET и языка C#/VB. В эти моменты жизни достаточно часто получается изобретать велосипеды. Тем не менее, бывает полезно посмотреть на них и сейчас. Приведу наиболее популярные.

Работа с путями

  • Path.GetFileNameWithoutExtension() – позволяет получить имя файла без расширения
  • Path.GetRandomFileName() – генерирует случайное имя файла или папки
  • Path.GetTempFileName() – создает файл во временной папке со случаным именем
  • Path.Combine(basePath, fileName) – позволяет объединить две части пути (вместо использования basePath + @"\" + fileName)
  • Directory.CreateDirectory() – создает папку. Кроме того, многие программисты забывают, что этот метод выполняет проверку на наличие этой папки и оборачивают этот метод в if(Directory.Exists())
  • Environment.GetFolderPath() – позволяет получить путь до специальной папки (например, Мои документы)

Специальные символы

  • Environment.NewLine – символ новой строки (вместо \r\n)
  • Path.DirectorySeparatorChar – символ разделения имен папок/файлов при указании пути (вместо /)

Работа с файлами

  • File.ReadAllBytes(), File.ReadAllLines(), File.ReadAllText() – бывает что для чтения файлов мы используем потоки (FileStream), при этом заботясь об их корректном открытии/закрытии, хотя вся операция делается в 1 строчку
  • File.WriteAllBytes(), File.WriteAllLines(), File.WriteAllText() – аналогично для записи в файл

Работа со строками

  • String.IsNullOrEmpty() – позволяет проверить строку на пустоту (делает две проверки: == null и == "")
  • String.Split() – позволяет разбить строку на массив строк по заданному символу (например, по запятой)
  • String.Join() – обратная операция, позволяет объединить массив строк в одну строку
  • "...".StartsWith(), "...".EndsWith() – позволяет определить начинается ли или кончается ли заданная строка в соответствии с шаблоном

Работа с сетью

  • класс WebClient – позволяет получить данные из сети используя простые методы DownloadString(), DownloadFile(), DownloadData()
  • Dns.GetHostName() – получить имя текущего хоста
  • Dns.Resolve() – получить информацию об узле по имени хоста
  • Dns.GetHostByAddress() – получить информацию об узле по IP-адресу

Данные

  • Enumerable.Range() – сгенерировать массив чисел заданного диапазона
  • IEnumrable<T>.Any(predicate) – определяет удовлетворяет ли заданному условию хотя бы один элемент из списка
  • IEnumrable<T>.All(predicate) – определяет удовлетворяет ли заданному условию все элементы списка
  • [UPDATED: Спасибо Mike Chaliy] IEnumerable<T>.Select() – позволяет также выполнять какие-то действия над каждым элементом списка:
var data = Enumerable.Range(0, 100);
data.Select(delegate(int d)
{
    DoSomething(d);

    return data;
}).ToList();
  • класс BitConverter – позволяет представлять данные в виде последовательности байт и обратно
  • классы System.Data.Common.DbConnectionStringBuilder, System.Data.SqlClient.SqlConnectionStringBuilder – позволяют генерировать строки соединения

Reflection

  • MethodBase.GetCurrentMethod().Name – позволяет получить имя текущего исполняемого метода (удобно для записи в Log)
  • Enum.Parse() – позволяет из строки получить значение перечисления
  • System.CodeDom – позволяет генерировать и исполнять код

Прочее

  • System.Diagnostics.Stopwatch – позволяет замерять время работы участков кода (очень распространенный велосипед:))
  • CultureInfo.GetCultures() – позволяет получить список всех культр:
foreach (CultureInfo culture in CultureInfo.GetCultures(CultureTypes.AllCultures &~ CultureTypes.NeutralCultures))
{
    RegionInfo region = new RegionInfo(culture.LCID);       
    Console.WriteLine(@"{0} - {1}", region.EnglishName, region.DisplayName);
}