هل نحتاج إلى إغلاق C# BinaryWriter أو BinaryReader في كتلة باستخدام؟

StackOverflow https://stackoverflow.com/questions/1079434

  •  21-08-2019
  •  | 
  •  

سؤال

امتلاك هذا الرمز:

using (BinaryWriter writer = new BinaryWriter(File.Open(ProjectPath, FileMode.Create)))
{
   //save something here
}

هل نحتاج إلى إغلاق binarywriter؟ إذا لم يكن كذلك ، لماذا؟

هل كانت مفيدة؟

المحلول

طالما أنه اختتم كل شيء في using حظر ثم لا تحتاج إلى الاتصال صراحة Close.

ال using ستضمن الكتلة التخلص من الكائن ، و Close و Dispose الطرق قابلة للتبديل BinaryWriter. (ال Close الطريقة مجرد المكالمات Dispose خلف الكواليس.)

نصائح أخرى

وضعه في بيان باستخدام مثال الكود الخاص بك سوف يستدعي Dispose ، والذي يغلق الدفق الأساسي ، لذلك لا. يمكنك رؤية هذا من خلال العاكس:

protected virtual void Dispose(bool disposing)
{
    if (disposing)
    {
        this.OutStream.Close();
    }
}

باستخدام الرمز الذي لديك هناك ، سيغلق الملف بمجرد خروجه من الكتلة ، لذلك لا تحتاج إلى الاتصال بـ Explcitly.

السبب الوحيد لعدم استخدام بيان استخدام هو إذا كنت تريد أن يظل الملف مفتوحًا بعد الانتهاء من ذلك مع BinaryWriter الخاص بك ، وفي هذه الحالة يجب أن تمسك بالمرجع منه بدلاً من نقله إلى المُنشئ من هذا القبيل.

ستغلق الكتلة استخدام الكاتب الثنائي تلقائيًا ويضعه في حالة ليكون GC'ed. استخدام الكتل هي السكر النحوي للقيام باستثناء معالجة وإغلاق التيار بنفسك.

من خلال لف الكاتب في كتلة باستخدام ، سيحدث الإغلاق تلقائيًا عند التخلص من الكاتب. لذلك في هذه الحالة ، لا تحتاج إلى إغلاق الكاتب بشكل صريح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top