Using Statement ใน C# กับใน Unity คืออะไร
เวลาเราเขียนเกมส์ใน Unity หลายๆครั้งเมื่อเราไม่ต้องการใช้ Textures หรือ GameObject บางตัวแล้ว เราต้องทำการลบมันออกจาก memory ด้วยการเรียน Dispose()
ซึ่งถ้าเราลืมก็อาจจะเกิด Memory overflow ได้ ถึงแม้ใน C# จะมี garbage collector หรือตัวกำจัด resource ที่ไม่ใช้แล้วก็ตาม แต่เราก็ไม่รู้ว่ามันจะกำจัดให้เราเมื่อไหร่ ถ้าเราดันสร้าง object มาเร็วมากๆแล้วไม่ได้ลบมันทิ้ง mem เกินที่จะใช้ได้ เกมส์เราก็ crash
using statement จะมาช่วยคุณได้ เผื่อกันคุณลืมเรียก Dispose() เมื่อเลิกใช้
ตัวอย่างการใช้งานก็ให้ครอบสิ่งที่เราต้องการ Dispose เมื่อ statement จบไว้ตามนี้
using (var reader = new StringReader(manyLines))
{
string? item;
do {
item = reader.ReadLine();
Console.WriteLine(item);
} while(item != null);
}
Object ที่ implement IDisposable หรือ IAsyncDisposable จะสามารถใช้กับ keyword using ได้ครับ เพราะฉะนั้นคุณสามารถสร้าง object ที่สามารถใช้ using keyword เองด้วยก็ได้นะ
ระวังว่า object ที่อยู่ใน using เป็น read-only ไม่สามารถแก้ไขหรือ reassign ได้ และ using ก็จะเรียก Dispose ให้เราด้วยเมื่อเกิด exception ใน using block