1. C# / Говнокод #10050

    +123

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    static bool HasSp1()
    {
    	try
    	{
    		WaitHandle h = new ManualResetEvent(true);
    		h.WaitOne(0);
    		return true;
    	}
    	catch
    	{
    		return false;
    	}
    }

    Проверка наличия Service Pack 1 к .NET Framework 3.5 (в продолжение предыдущего ГК). Да, есть другие варианты, но этот не выглядит хуже.

    Запостил: Steve_Brown, 26 Апреля 2012

    Комментарии (26) RSS

    • Жесть! А я верил, что у них есть функция, возвращающая версию фреймворка.
      Ответить
      • а я верил что есть KB article http://support.microsoft.com/kb/318785/en-us
        Ответить
        • Узнавать версию текущего рантайма через реестр... чтож, это в стиле MS.
          Ответить
          • ну, в общем да, - в стиле Windows
            но тем не менее странно, что не сделали управляему обёртку. Environment.Version по всей видимости она и есть
            Ответить
            • Только вот для 3.5 она возвращает
              {2.0.50727.3625}
              Не, наверное, можно было бы сравнить младшие циферки, и так было бы правильней, но... почему 2.0? А так хотя бы веселей.
              Ответить
              • потому что свойство возвращает версию рантайма.
                а ОП хочет версию FCL. странно что всё таки нет обёртки
                Ответить
              • 2.0 походу потому, что 3.5 это просто набор классов. А рантайм остался тот же самый.
                Ответить
          • Эта статья не для разработчиков, а для пользователей, желающих узнать версию. Ведь там не приведён пример кода.
            Ответить
    • Environment.Version в данном случае не помогло бы?
      Ответить
    • Говнокод #10050O
      Ответить
      • Да, их уже давно over 9000
        Тред добра
        Ответить
      • сраный триммер бибикода.
        if (trim($open['data'])) {...
        нули, не проходят. говнокод в говнокоде.
        Ответить
    • [trololo]   А ЛИНКОМ ЭТО НЕЛЬЗЯ СДЕЛАТЬ?!   [/trololo]
      Ответить
      • try
        {
            Enumerable.Range(0, 1).Cast<float>().ElementAt(0);
            return false;
        }
        catch (InvalidCastException)
        {
            return true;
        }

        Если не ошибаюсь, то так. Cast<T> предназначен для приведения типов, использование его для преобразования типов является ошибкой.
        Т.е., Cast<int> или Cast<object> в данном случае легально, Cast<float> - нет.
        Без СП это прокатывало.
        Ответить
      • try {new ManualResetEvent(true).WaitOne(0).AsParallel()} catch {return false;}
        Ответить
        • Толсто...

          'bool' does not contain a definition for 'AsParallel' and no extension method 'AsParallel' accepting a first argument of type 'bool' could be found
          Ответить
          • try{ 
                new ManualResetEvent(true).WaitOne(0);
                (return true) .AsParallel();
            }.AsParallel()
            .catch {
                (return false).AsParallel();
            }.AsParallel()
            .finally{
                (throw new Exception("")) .AsParallel();
            }.AsParallel()
            Ответить
    • - Да вот... пытаюсь тебя разбудить. Приготовил тебе завтрак.
      Ответить
    • Мы пожали друг другу руки, и Джейкоб ещё раз меня приобнял.
      Ответить

    Добавить комментарий