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

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

لطف کنید یک مثال هم بزنید.
سوال 4 سال قبل در تالار برنامه نویسی توسط hldv (762 امتیاز)
برچسب گذاری مجدد در 4 سال قبل توسط 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.3558 بازدید
سوال 5 سال قبل در تالار برنامه نویسی توسط hldv (762 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.6425 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.2568 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.1577 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1186 بازدید
سوال 2 سال قبل در تالار برنامه نویسی توسط Rambodxzx (60 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.52499 بازدید
+1 رأی
2 جواب میانگین بازدید روزانه 1.561,545 بازدید
سوال 2 سال قبل در تالار برنامه نویسی توسط Ali9978 (5 امتیاز)
0 رأی
0 جواب میانگین بازدید روزانه 0.21212 بازدید
سوال 2 سال قبل در تالار برنامه نویسی توسط شهاب سلطانی (0 امتیاز)
0 رأی
0 جواب میانگین بازدید روزانه 0.16201 بازدید
0 رأی
2 جواب میانگین بازدید روزانه 0.62814 بازدید
کانال تلگرام جواب یاب
...