ปกติการประกาศตัวแปรเพื่อใช้สำหรับการทำงานกับไฟล์ หรือ ตัวแปรที่ติดต่อกับฐานข้อมูล
จะการทำงานในลักษณะที่จะต้องมีตัวแปรอ้างอิงค้างไว้ จนเมื่อเสร็จสิ้นการทำงานจึงจะทำการยกเลิกการติดต่อ
จึงจะมีการเรียกใช้เมธอด Close() เมื่อเสร็จสิ้นการใช้งาน เนื่องจากเพื่อให้ผู้อื่นสามารถมาใช้งานได้ และ เมธอด Dispose() เพื่อทำการปล่อยการใช้พื้นที่บนหน่วยความจำ
โดยสามารถเขียน Code ได้ดังรูปที่ 1
รูปที่ 1

จากรูปที่ 1 คือ Code แสดงคำสั่งการเขียนข้อมูลลง TextFile ซึ่งอธิบาย Code ได้ดังนี้
บรรทัดที่ 10 เป็นการประกาศ Object file จาก Class StreamWrite ที่อ้างอิงไปยังไฟล์ Data.txt
บรรทัด 11-14 เป็นคำสั่งวนลูปจำนวน 100 รอบเพื่อเขียนข้อความลงไปในไฟล์
บรรทัด 15 เป็นคำสั่งปิดไฟล์ เพื่อให้ Code อื่น ๆ สามารทำงานกับไฟล์ได้
ซึ่งเราสามารถใช้คำสั่ง Using เพื่อให้ได้ผลลัพธ์เดียวกันได้ ดังตัวอย่างการเขียน Code รูปที่ 2 ซึ่งเป็น Code แสดงการใช้งาน Classic Using
รูปที่ 2

Classic Using
Classic using คือการเขียนคำสั่ง Using ที่มีก่อน C# 8.0 โดยใช้วิธีใส่ keyword using แล้วกำหนดเป็น block โดยใส่ วงเล็บปีกกา
object อะไรก็ตามที่ประกาศไว้ภายในวงเล็บปีกกาจะถูก dispose เมื่อโค้ดเคลื่อนออกนอกวงเล็บปีกกา
นั่นคือเราใช้วงเล็บปีกกาเป็นตัวกำหนด scope ของ variable หรือ object
รูปที่ 2 คือ Code แสดงการใช้งาน Classic Using ต่อไปนี้เป็นคำอธิบาย Code
บรรทัดที่ 10: ประกาศ variable string array ขนาด 4 element
บรรทัดที่ 11-14: ใส่ข้อความลงใน element ต่าง ๆ ของ variable
บรรทัดที่ 15: เรียกเมธอด WriteLinesToFile โดยใช้แปร string ที่ประการไว้ข้างต้นเป็น argument
บรรทัดที่ 16: แสดงข้อความเพื่อเป็นเครื่องหมายว่าโปรแกรมทำงานเสร็จแล้ว
บรรทัดที่ 18-39: definition ของ method WriteLinesToFile ที่ภายในมีตัวอย่างโค้ด Classic Using method นี้ทำหน้าที่เขียน string ภายใน parameter ลงสู่ file parameter มีหนึ่งตัวเป็น data type IEnumerable ซึ่งหมายถึงเป็น type อะไรก็ดีที่ implement interface แบบ IEnumerable ไว้รวมถึง array ที่ใช้ในตัวอย่างนี้
บรรทัดที่ 23: declare variable skippedLines ไว้ก่อนเข้า block using เพราะเราต้องการอ้างถึง variable นี้ที่บรรทัด 39 ที่อยู่นอก scope ของ using
บรรทัดที่ 24,25: การใช้ Classic using จะตามด้วยวงเล็บที่ภายในมี declare variable ที่เราต้องการกำหนด scope
บรรทัดที่ 26,28: นี่คือคู่ของวงเล็บปีกกาที่ใช้กำหนด scope ของ variable ที่เรา declare ไว้ในบรรทัดที่ 24,25
บรรทัดที่ 27-37: loop การทำงานด้วยคำสั่ง foreach ที่จะ loop เป็นจำนวนครั้งเท่ากับ variable lines ภายใน loop มีคำสั่งนำข้อมูลใน variable lines บันทึกลงไปยัง file ครั้งละหนึ่ง element ยกเว้นว่าภายใน element นั้น string มีคำว่า Second อยู่ภายในจะข้ามไปและจะเพิ่มค่า variable skippedLines
บรรทัดที่ 29: ตรวจสอบว่าภายใน element นี้ใน string มีคำว่า Second อยู่หรือไม่
บรรทัดที่ 31: ถ้าภายใน element นี้ใน string ไม่มีคำว่า Second ให้บันทึกลง file โดยใช้ method file.WriteLine
บรรทัดที่ 38: ตรงนี้ variable file ถูก dispose แล้วเพราะออกนอก scope ของ using
บรรทัดที่ 37: ส่งค่าใน variable skippedLines เป็น return value โปรดสังเกตว่าบรรทัดนี้ variable skippedLines ยังคงอยู่ภายใน scope เพราะเรา declare มันไว้ในบรรทัดคำสั่งก่อน using
บรรทัดที่ 38: เมื่อถึงบรรทัดนี้ variable file ถูก dispose เพราะถือว่าออกนอก scope การเป็นเช่นนี้ช่วยอำนวยความสะดวกให้เราไม่ต้องใส่คำสั่ง dispose ถ้าเราลืมใส่จะมีผลให้ variable file ยังคงอยู่และ file WriteLine2.txt ยังคงถูกเปิดค้างอยู่จนกว่าโปรแกรมจะจบการทำงานซึ่งไม่ดีเพราะโค้ดอื่นจะไม่สามาถใช้งาน file ได้
แต่ใน C# version 8.0 มี feature Using declarations ซึ่งมีวิธีเขียนที่กระชับกว่าการใช้ Using แบบ Classic ดังตัวอย่างการเขียน Code ตามรูปที่ 3
รูปที่ 3

Using declarations
Using declarations เป็น feature ใหม่ที่เริ่มใน C# version 8.0
โดย Using declarations คือการประกาศ variable ด้วยการใส่ keyword using ไว้ข้างหน้า
การทำเช่นนี้เพื่อจะบอกให้ compiler รู้ว่า variable ที่กำลังประกาศนี้ควรถูก dispose เมื่อจบ enclosing scope
โดย Using declarations ใน C# version 8.0 มีวิธีเขียนที่กระชับกว่าการใช้ Using แบบ Classic
รูปที่ 3 คือโค้ดแสดงการใช้งาน Using declarations ต่อไปนี้เป็นคำอธิบายโค้ด
บรรทัดที่ 10: ประกาศ variable string array ขนาด 4 element
บรรทัดที่ 11-14: ใส่ข้อความลงใน element ต่าง ๆ ของ variable
บรรทัดที่ 15: เรียกเมธอด WriteLinesToFile โดยใช้ variable string ที่ประการไว้ข้างต้นเป็น argument
บรรทัดที่ 16: แสดงข้อความเพื่อเป็นเครื่องหมายว่าโปรแกรมทำงานเสร็จแล้ว
บรรทัดที่ 18-39: definition ของ method WriteLinesToFile ที่ภายในมีตัวอย่างโค้ด Using declarations method นี้ทำหน้าที่เขียน string ภายใน parameter ลงสู่ file parameter มีหนึ่งตัวเป็น data type IEnumerable ซึ่งหมายถึงเป็น type อะไรก็ดีที่ implement interface แบบ IEnumerable ไว้รวมถึง array ที่ใช้ในตัวอย่างนี้
บรรทัดที่ 20: declare variable โดยใส่คำสั่ง using ไว้ข้างหน้า โปรดสังเกตว่าต้องใส่ไว้หน้าสุด ก่อนการระบุ data type ของ variable
บรรทัดที่ 21: เป็นบรรทัดคำสั่งต่อจากบรรทัดบน กำหนดชื่อ file ที่จะเขียนข้อมูลโดยใช้ method System.IO.StreamWriter
บรรทัดที่ 22: declare variable ที่จะใช้เป็น status flag โปรดสังเกตว่าเรา declare variable ตัวนี้หลังบรรทัดคำสั่ง using
บรรทัดที่ 25-35: loop การทำงานด้วยคำสั่ง foreach ที่จะ loop เป็นจำนวนครั้งเท่ากับ variable lines ภายใน loop มีคำสั่งนำข้อมูลใน variable lines บันทึกลงไปยัง file ครั้งละหนึ่ง element ยกเว้นว่าภายใน element นั้น string มีคำว่า Second อยู่ภายในจะข้ามไปและจะเพิ่มค่า variable skippedLines
บรรทัดที่ 27: ตรวจสอบว่าภายใน element นี้ใน string มีคำว่า Second อยู่หรือไม่
บรรทัดที่ 29: ถ้าภายใน element นี้ใน string ไม่มีคำว่า Second ให้บันทึกลง file โดยใช้ method file.WriteLine
บรรทัดที่ 37: ส่งค่าใน variable skippedLines เป็น return value โปรดสังเกตว่าบรรทัดนี้ variable skippedLines ยังคงอยู่ภายใน scope
บรรทัดที่ 38: เมื่อถึงบรรทัดนี้ variable file ถูก dispose เพราะถือว่าออกนอก scope การเป็นเช่นนี้ช่วยอำนวยความสะดวกให้เราไม่ต้องใส่คำสั่ง dispose ถ้าเราลืมใส่จะมีผลให้ variable file ยังคงอยู่และ file WriteLine2.txt ยังคงถูกเปิดค้างอยู่จนกว่าโปรแกรมจะจบการทำงานซึ่งไม่ดีเพราะโค้ดอื่นจะไม่สามาถใช้งาน file ได้
แม้ว่าการใช้ Using แบบ Classic จะยังใช้ได้ใน C# version 8.0 แต่จากตัวอย่างโค้ด จะพบว่าการใช้ Using Declarations จะทำให้การเขียนคำสั่งสั้นและกระชับมากขึ้นกว่าการใช้ Using แบบ Classic โดยไม่ต้องใส่ปีกกาครอบไว้ ป้องกันการลืมใส่แต่ปีกกาเปิด { แต่ ไม่ได้ใส่ปีกกาปิด } อีกด้วย











