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