Собрание полезных трюков и советов

воскресенье, 12 апреля 2009, Александр Краковецкий

Предлагаю вашему вниманию небольшую коллекцию советов (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 Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии