نمایش نتایج 1 تا 18 از 18

نام تاپیک: interface های مهم در C#‎‎‎‎‎‎‎‎‎

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #3
    کاربر دائمی آواتار cardano7
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    کارتون خواب
    پست
    473

    IDisposable

    System.IDisposable
    این interface شما رو موظف می کنه که یک متد به نام Dispose به کلاستون اضافه کنید.
            public void Dispose()
    {
    ....
    }


    هدف از این کار release کردن unmanaged resources هست.
    اگر کلاسی این interface را پیاده سازی کنه، قابلیت این رو داره که در بلوک using به کار گرفته بشه. در غیر این صورت کامپایلر اجازه ی این کار رو نمیده.

    این دو نمونه کلاس رو نگاه کنید:
        class myClass1 : IDisposable
    {
    ...
    public void Dispose()
    {
    ...
    }
    }

    class myClass2
    {
    ...
    public void Dispose()
    {
    ...
    }
    }


    هر دو شبیه هم هستند و تنها تفاوتشون اینه که myClass2 بر خلاف myClass1 از IDisposable ارث بری نکرده.(گرچه هر دو متد Dispose را دارا هستند)
    حالا ببینیم عاقبتشون چی میشه. به هر دو using زیر نگاه کنید:

                using (myClass1 mc1 = new myClass1())
    {
    ....
    }

    using (myClass2 mc2 = new myClass2())
    {
    ...
    }


    اولی بعد از اجرا ی بلوک، متد Dispose رو صدا می زنه.
    اما دومی کارش به اینجاها نمیکشه. همون اول کامپایلر با این error متوقفش می کنه:
    type used in a using statement must be implicitly convertible to 'System.IDisposable'
    البته میشه آزادسازی دستی توسط متد Dispose را در بلوک های finally هم مشاهده کرد.

    در زیر لیستی از کلاس هایی را می بینید که این interface را پیاده سازی کرده اند. چه کلاس های دیگری را هم در اطرافتون می شناسید دارید که این interface رو پیاده سازی کرده باشند؟


    • BinaryReader
    • BinaryWriter
    • Brush
    • Component
    • Container
    • Control
    • Cursor
    • Font
    • Graphics
    • Icon
    • Image
    • Matrix
    • MessageEnumerator
    • OdbcDataReader
    • OdbcTransaction
    • OleDbDataReader
    • OleDbTransaction
    • OracleDataReader
    • OracleTransaction
    • Pen
    • Region
    • Socket
    • SqlCeCommand
    • SqlCeConnection
    • SqlCeDataReader
    • SqlCeEngine
    • SqlCeRemoteDataAccess
    • SqlCeReplication
    • SqlCeTransaction
    • SqlDataReader
    • SqlTransaction
    • Stream
    • TcpClient
    • TextReader
    • TextWriter
    • Timer
    • UdpClient
    • WebResponse



    --------------------------------------
    این هم جواب هایی که برخی از دوستان دادند:
    https://barnamenevis.org/showpo...17&postcount=6
    آخرین ویرایش به وسیله cardano7 : سه شنبه 12 مرداد 1389 در 04:04 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •