در سی شارپ، fixed به چه معناست؟

0 رأی
میانگین بازدید روزانه 0.23448 بازدید
اول اینکه به چه معناست و چه کاری انجام می دهد.

لطف کنید یک مثال هم بزنید.
سوال 5 سال قبل در تالار برنامه نویسی توسط hldv (762 امتیاز)
برچسب گذاری مجدد در 5 سال قبل توسط Saeed Zarinfam

1 جواب

0 رأی

دستور 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

جواب 4 سال قبل توسط gholamalih (20 امتیاز)

سوال های مشابه

+1 رأی
1 جواب میانگین بازدید روزانه 0.29578 بازدید
سوال 5 سال قبل در تالار برنامه نویسی توسط hldv (762 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.2236 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.2391 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.1493 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.12103 بازدید
سوال 2 سال قبل در تالار برنامه نویسی توسط Rambodxzx (60 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.52565 بازدید
+1 رأی
2 جواب میانگین بازدید روزانه 1.651,840 بازدید
سوال 3 سال قبل در تالار برنامه نویسی توسط Ali9978 (5 امتیاز)
0 رأی
0 جواب میانگین بازدید روزانه 0.24266 بازدید
سوال 3 سال قبل در تالار برنامه نویسی توسط شهاب سلطانی (0 امتیاز)
0 رأی
0 جواب میانگین بازدید روزانه 0.19269 بازدید
0 رأی
2 جواب میانگین بازدید روزانه 0.68979 بازدید
کانال تلگرام جواب یاب
...