PDA

View Full Version : سوال: خطای unfixed expression...؟



nimnegah
دوشنبه 20 آبان 1387, 18:01 عصر
با سلام

من میخوام آدرس یه خونه از آرایه رو ذخیره کنم تا بعد از اون در جای دیگه استفاده کنم..

وقتی من از کد زیر استفاده میکنم



int [,] val= newint[500,500];
int*[] pnt = newint*[500];
val[0, 0] = 45;
pnt[0] = &val[0, 0];


خطای زیر رو میده...


You can only take the address of an unfixed expression inside of a fixed statement initializer E:\Courses\Term_2\Simu_Project\simulation3\simulat ion\Form1.cs

علتش چیه و چطوری این مشکل حل میشه...

Salar Ashgi
دوشنبه 20 آبان 1387, 20:06 عصر
سلام ، شما در سی شارپ از اشاره گرها فقط در بلوک Unsafe میتوانید استفاده کنید !!!

موفق و پیروز باشید !!!

nimnegah
دوشنبه 20 آبان 1387, 20:25 عصر
,ولی من از بلوک unsafe استفاده کردم...



unsafe private void Ucs_btn_Click(object sender, EventArgs e)

SMRAH1
سه شنبه 21 آبان 1387, 23:01 عصر
سلام

1) بهتره ابتدا یک نگاهی به Unsafe Code and Pointers (C# Programming Guide) و fixed Statement (C# Reference) توی MSDN بیاندازی.

2) می تونی از Fixed به شکل زیر استفاده کنی ولی باید در block خودش باشه یعنی

fixed (int* pnt4 = &val[0, 0])
{
//Do Work
}

3) تا اونجایی که من میدونم،فقط در زمانی بهتره بریم سراغ اشاره گر ها و کد unsafe که لازم باشه (سرعت لازم داریم یا در خوده #C نمیشه , ...).می خواهید چکار کنید که نیاز به همچین کدی دارید؟شاید توضیح بیشتر بتون راه حل بهتری پیش پاتون بگذاره!

موفق باشید