Собрание полезных трюков и советов
Предлагаю вашему вниманию небольшую коллекцию советов (tips and tricks), которые, как я надеюсь, помогут вам в вашей повседневной работе.
Foreach и Enumeration типы
Для того, чтобы иметь возможность пройти по всем значениям некоторого перечисления (enum), необходимо воспользоваться функцией GetValues, так как enums не реализуют напрямую интерфейс IEnumerable:
enum Сars
{
Mazda = 3,
Volvo,
LadaKalina,
Mercedes
}
static void Main(string[] args)
{
foreach (var c in Enum.GetValues(typeof(Cars)))
{
Console.WriteLine("{0} ({1})", c, (int)c);
}
}
/* Вывод
Mazda (3)
Volvo (4)
LadaKalina (5)
Mercedes (6)
*/
Как преобразовать строку в enumerable тип?
Сделать это можно с помощью следующего кода:
enum Numbers
{
Zero,
One,
Two,
Three
}
static void Main(string[] args)
{
Numbers num = (Numbers)Enum.Parse(typeof(Numbers), "Two");
Console.WriteLine("{0}={1}", num, (int)num); // Outputs "Two=2"
}
Нужно также помнить, что данная процедура чувствительная к регистру. Если вы хотите это исправить, просто передайте в метод Parse третий параметр - логическое значение true.
Как отобразить номера строк кода
Для этого необходимо пройти в настройки Visual Studio Options -> Text Editor -> C# и отметить флажок Line Numbers:
Как узнать название текущего дня недели?
Для этого нужно использовать свойство DayOfWeek:
string day = DateTime.Now.DayOfWeek.ToString();
Console.WriteLine(day);
Выведет: "Wednesday"
Если же мы хотим вывести название дня недели, использую настройки культуры, то необходимо выполнить такой код:
CultureInfo local = CultureInfo.CurrentCulture;
CultureInfo germany = CultureInfo.GetCultureInfo("de-DE");
int day = (int)DateTime.Now.DayOfWeek;
Console.WriteLine(local.DateTimeFormat.DayNames[day]);
Console.WriteLine(germany.DateTimeFormat.DayNames[day]);
/* Вывод
Wednesday
Mittwoch
*/
Еще один вариант получить название для недели - использовать метод ToString() с форматом "dddd" для получения полного названия и "ddd" для короткого:
DateTime today = DateTime.Now;
Console.WriteLine(today.ToString("dddd")); // выведет "Wednesday"
Console.WriteLine(today.ToString("ddd")); // выведет "Wed"
Как получить информацию об операционной системе пользователя?
Для этого необходимо использовать класс Environment:
OperatingSystem os = Environment.OSVersion;
Console.WriteLine("Platform: {0}", os.Platform);
Console.WriteLine("Version: {0}", os.Version);
Console.WriteLine("Svc Pack: {0}", os.ServicePack);
Console.WriteLine("VString: {0}", os.VersionString);
/* Вывод
Platform: Win32NT
Version: 6.0.6000.0
Svc Pack:
VString: Microsoft Windows NT 6.0.6000.0
*/
Значения Platform и их версий:
- Win32S (1.1) - Win32s ОС, что позволяет 32-битным программам выполняться в 16-битной среде. Эта операционная система не поддерживает .NET, поэтому мы никогда не получим это значение.
- Win32NT (1.1) - Windows NT или поздние версии.
- Win32Windows (1.1) - Windows 95 или поздние версии.
- WinCE (1.1) - Windows CE.NET или друние мобильные Windows-системs? такие как PocketPC или Windows Mobile.
- Unix (2.0) - Unix-системы.
- XBox (3.5) - ОС, работающая на игровых консолях Microsoft XBox 360.
Как поменять текущую рабочую директорию приложения?
Для этого необходимо поменять свойство CurrentDirectory класса Environment:
string folder = Environment.CurrentDirectory;
Environment.CurrentDirectory = @"C:\";
На первый взгляд все очень просто, но часто из-за такой мелочи невозможно понять, почему программа не находит необходимые ресурсы и файлы.
P.S. Если у вас есть интересные советы - пишите в комментариях.
Компании из статьи
Microsoft Украина | Украинское подразделение компании Microsoft. |