هل نحتاج إلى إغلاق C# BinaryWriter أو BinaryReader في كتلة باستخدام؟
-
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. استخدام الكتل هي السكر النحوي للقيام باستثناء معالجة وإغلاق التيار بنفسك.
من خلال لف الكاتب في كتلة باستخدام ، سيحدث الإغلاق تلقائيًا عند التخلص من الكاتب. لذلك في هذه الحالة ، لا تحتاج إلى إغلاق الكاتب بشكل صريح.