Убрать проверку путей в реестре

216
09 июля 2017, 10:52
public static string GetPath()
{
   try
   {
   using (var Key = Registry.LocalMachine.OpenSubKey(SteamPath64, true))
   {
     using (var Key2 = Registry.LocalMachine.OpenSubKey(SteamPath32, true))
     {
     if (Key != null)
         return (string)Key.GetValue("InstallPath").ToString();
     else if (Key2 != null) 
         return (string)Key2.GetValue("SourceModInstallPath").ToString();
     }
   }
     return GetPath();
   }
   catch 
   { 
      return null; 
   }
}

Подскажите как сделать проверку без использовать Key != null ?

Answer 1

Для C# 6.0+ можно изменить ваш код например так:

public static string GetPath()
{
    using (var Key = Registry.LocalMachine.OpenSubKey(SteamPath64, true))
    using (var Key2 = Registry.LocalMachine.OpenSubKey(SteamPath32, true))
    {
        return Key?.GetValue("InstallPath")?.ToString() ?? Key2?.GetValue("SourceModInstallPath")?.ToString();
    }
}

в случае отсутствия первого ключа или его значения, будет запрошен второй. Если и он отсутствует - вернется null.

Ни какой магии тут нет, все необходимые проверки будут сделаны, их подставит компилятор.

READ ALSO
Авторизация на сайте через mail.ru

Авторизация на сайте через mail.ru

Доброго времени суток!

440
Как сделать прогресс бар для Ajax запроса?

Как сделать прогресс бар для Ajax запроса?

Как сделать прогресс бар для Ajax-запроса? Не gif-изображение, а именно отслеживать загрузку страницы, которая загружается через Ajax-запрос

349
Как остановить audio в HTML (JavaScript)?

Как остановить audio в HTML (JavaScript)?

После var audio = new Audio('testmp3') и audio

566
Разложить массив до первого уровня

Разложить массив до первого уровня

Есть массив: [['a', 'b', 'c'], 'r', 't', ['g', ['j', 'u', 'i'], 'y'], 'i']

370