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

    −15

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    try 
    {
    	Stream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
    	buffer = new Buffer(stream, false);
    	Init();
    } 
    catch (IOException)
    {
    	throw new Exception("Cannot open file " + fileName);
    }

    Запостил: dm_fomenok, 26 Октября 2016

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

    • А закрывать кто будет?
      Ответить
      • > А закрывать кто будет?

        Хейлсберг.
        Ответить
      • гц и диспоуз паттерн закроют, негоже барину с таким ебаться
        Ответить
        • Где он здесь? Поток никто не закрывает до выхода переменной stream из области видимости, и using не используется.
          Ответить
          • void Init()
            {
              try
              {
                ...
              }
              finally
              {
                buffer.Stream.Close();
              } 
            }

            Логично же.
            Ответить
            • Логично было обернуть этой хуйней вызов инит, чтобы сразу было видно что логично.
              Ответить
            • ~Buffer() 
              { 
              	Close();
              }
              		
              protected void Close() 
              {
              	if (!isUserStream && stream != null)
              	{
              		stream.Close();
              		stream = null;
              	}
              }


              Вот и весь код закрытия. Я думаю, то говницо, ибо финализаторы -- медленно.
              Ответить
    • try 
      {
      using(Stream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)){
      	buffer = new Buffer(stream, false);
      	Init();
      }
      } 
      catch (IOException)
      {
      	throw new Exception("Cannot open file " + fileName);
      }
      не?
      Ответить

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