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

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

لطف کنید یک مثال هم بزنید.
سوال 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.29564 بازدید
سوال 5 سال قبل در تالار برنامه نویسی توسط hldv (762 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.2827 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.2478 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.1590 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1295 بازدید
سوال 2 سال قبل در تالار برنامه نویسی توسط Rambodxzx (60 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.53539 بازدید
+1 رأی
2 جواب میانگین بازدید روزانه 1.591,667 بازدید
سوال 2 سال قبل در تالار برنامه نویسی توسط Ali9978 (5 امتیاز)
0 رأی
0 جواب میانگین بازدید روزانه 0.22234 بازدید
سوال 2 سال قبل در تالار برنامه نویسی توسط شهاب سلطانی (0 امتیاز)
0 رأی
0 جواب میانگین بازدید روزانه 0.18237 بازدید
0 رأی
2 جواب میانگین بازدید روزانه 0.64882 بازدید
کانال تلگرام جواب یاب
...