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

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

لطف کنید یک مثال هم بزنید.
سوال 5 سال قبل در تالار برنامه نویسی توسط hldv (760 امتیاز)
برچسب گذاری مجدد در 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

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

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

0 رأی
1 جواب میانگین بازدید روزانه 0.1744 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.22108 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.14103 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.11112 بازدید
سوال 2 سال قبل در تالار برنامه نویسی توسط Rambodxzx (60 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.52621 بازدید
+1 رأی
2 جواب میانگین بازدید روزانه 1.631,962 بازدید
سوال 3 سال قبل در تالار برنامه نویسی توسط Ali9978 (5 امتیاز)
0 رأی
0 جواب میانگین بازدید روزانه 0.26308 بازدید
سوال 3 سال قبل در تالار برنامه نویسی توسط شهاب سلطانی (0 امتیاز)
0 رأی
0 جواب میانگین بازدید روزانه 0.22322 بازدید
0 رأی
2 جواب میانگین بازدید روزانه 0.71,066 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.11183 بازدید
سوال 4 سال قبل در تالار برنامه نویسی توسط Rambodxzx (60 امتیاز)
کانال تلگرام جواب یاب
...