0 امتیاز
قبل در برنامه نویسی توسط (760 امتیاز)
برچسب گذاری دوباره قبل توسط
اول اینکه به چه معناست و چه کاری انجام می دهد.

لطف کنید یک مثال هم بزنید.

1 پاسخ

0 امتیاز
قبل توسط (20 امتیاز)

دستور fixed از اینکه GC (آشغال جمع کن یا Garbage Collector) یک متغیر جابجا شدنی را منتقل کند، جلوگیریی می کند. دستور fixed فقط در زمینه(context) برنامه نویسی مدیریت نشده مجاز است.
دستور fixed همچنین می تواند برای ساختن بافرهای با اندازه ثابت مورد استفاده قرار گیرد. این دستور یک اشاره گر به متغیر مدیریت شده می سازد و آن متغیر را در حین اجرای دستور ثابت می کند. بدون fixed ، اشاره گرهای به متغیرهای مدیریت شده قابل انتقال، کاربرد کمی دارد، چون GC می تواند بطور پیش بینی نشده متغیر را جابجا کند. کامپایلر #C فقط اجازه واگذار کردن اشاره گر به متغیر مدیریت شده را در دستور fixed میدهد.
بعد از اجرای کد داخل دستور fixed هر متغیر پین شده (غیرقابل جابجایی)، Unpin می شود و هدف GC قرار می گیرد. بنابراین بیرون دستور fixed به آنها اشاره نکنید. اشاره گرهایی که در دستور fixed مقداردهی اولیه شده اند قابل اصلاح نیستند.
در روش مدیریت نشده، می توان حافظه پشته را که مورد هدف GC قرار نمی گیرد را اختصاص داد؛ و بنابراین نیازی به pin شدن ندارد.
 

unsafe static void Test(){
    Poin pt=new Point();
    fixed(int* p=&pt.x){
        *p=1;
    }
}

برای اطلاعات بیشتر در مورد unsafe و کلمات کلیدی دیگر #C به وبلاگم مراجعه بفرمایید.

http://butterfly.blog.ir/post/C%23%20keywords%20table

سوالات مشابه

+1 امتیاز
1 پاسخ 889 بازدید
+1 امتیاز
1 پاسخ 846 بازدید
0 امتیاز
1 پاسخ 311 بازدید
0 امتیاز
0 پاسخ 548 بازدید
0 امتیاز
1 پاسخ 674 بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط Rambodxzx (60 امتیاز)
+1 امتیاز
2 پاسخ 3.3هزار بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط Ali9978 (5 امتیاز)
0 امتیاز
0 پاسخ 1.2هزار بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط شهاب سلطانی (0 امتیاز)
...