PDA

View Full Version : سوال: تغییر نکردن مقدار آرایه که بصورت سراسری تعریف شده؟؟



setareh69
پنج شنبه 21 دی 1391, 14:07 عصر
سلام
من یک آرایه به صورت زیر قبل از page_load به صورت سراسری تعریف کردم

int[] b = new int[] { -1, -1, -1, -1 };

حالا مقدار b[0] رو در یک button تغییر دادم و صفر کردمش.

b[0] = 0;

اما مقدار آرایه ام تغییر نمیکنه و همون 1- میمونه.در صورتیکه من آرایه را بصورت سراسری تعریف کردم.خب باید اگر در هر قسمت برنامه مقدارش عوض شد داخل آرایه ثبت بشه دیگه.که نمیشه.مشکل از کجاست که مقدارش تغییر نمیکنه؟؟
مرسی

clover
پنج شنبه 21 دی 1391, 14:47 عصر
دوست من، آرایه ی شما به طور مثال داخل کلاس Default که از یک کلاس Page مشتق شده تعریف شده و در هر درخواست به صفحه (فشردن دکمه، زدن آدرس صفحه در مرورگر و ...) یک شی از اون کلاس ایجاد میشه که مقادیر پیش فرض رو داره، بعد از رندر شدن صفحه و ارسال پاسخ و اتمام درخواست اون شی هم از بین میره.

شما باید آرایه رو استاتیک تعریف کنید تا مقادیرش در درخواست های متوالی حفظ بشه

همینطور می تونید از اشیایی مانند Session، Application یا ViewState برای نگهداری مقادیر بسته به نیازتون استفاده کنید.

setareh69
پنج شنبه 21 دی 1391, 16:44 عصر
دوست من، آرایه ی شما به طور مثال داخل کلاس Default که از یک کلاس Page مشتق شده تعریف شده و در هر درخواست به صفحه (فشردن دکمه، زدن آدرس صفحه در مرورگر و ...) یک شی از اون کلاس ایجاد میشه که مقادیر پیش فرض رو داره، بعد از رندر شدن صفحه و ارسال پاسخ و اتمام درخواست اون شی هم از بین میره.

شما باید آرایه رو استاتیک تعریف کنید تا مقادیرش در درخواست های متوالی حفظ بشه

همینطور می تونید از اشیایی مانند Session، Application یا ViewState برای نگهداری مقادیر بسته به نیازتون استفاده کنید.


آرایه رو که استاتیک تعریف کردم اما مقدارش حفظ میشه و دوباره که اجرا میکنه جای اینکه مقدار اولیه 1- بگیرد همون مقادیر رو داره که درست نیست.
یعنی نمیشه با آرایه کارکرد؟
session و applicatipon هم نمیخوام استفاده کنم چون میخوام بصورت آرایه ای کارکنم.
باید چیکارکنم و آرایه رو کجا تعریف کنم که مقدارش رو در همه جا بشناسه.
ممنون میشم اگر کمکم کنید.

clover
پنج شنبه 21 دی 1391, 17:16 عصر
آرایه رو که استاتیک تعریف کردم اما مقدارش حفظ میشه و دوباره که اجرا میکنه جای اینکه مقدار اولیه 1- بگیرد همون مقادیر رو داره که درست نیست.
برای متغیرهای استاتیک شما یک بار مقدار دهی اولیه انجام میدید و نسخه ی دیگه ای از این متغیرها ایجاد نمیشه، در ضمن در طول برنامه مقادیر حفظ میشه و بین کاربرها و در خواست ها مشترک هستند.

شما می تونید توی Session، Application یا ViewState هم آرایه ذخیره کنید. از این لحاظ مشکلی نیست. با این حال اگر توضیح بدید که دقیقا قصد دارید چه کاری انجام بدید بهتر میشه راهنمایی کرد.

setareh69
پنج شنبه 21 دی 1391, 20:23 عصر
ممنون
سوالی که الان واسم پیش اومده اینه که در وب سایت مقداردهی اولیه رو کجا انجام بدم که فقط 1 بار اون هم در ابتدای لود مقدار دهی بشه.
اگر استاتیک بزارم درسته اما برای بار بعدی که اجرا میکنم مقدارش همون قبلیهاست اما من میخوام مقدارش عوض بشه و مقدار اولیه 1- بگیره.
اگر هم session بزارم این session ها رو کجاباید بزارم که هر بار که صفحه لود میشه مقدارش عوض نشه و فقط 1 بار در ابتدا عوض بشه و مقدار اولیه بگیرد و در ادامه ی برنامه مقدارش عوض شه و برنامه که تموم شد ،در واقع صفحه وب که بسته شد و از اول باز شد دوباره مقدار اولیه بگیره و از اول کارووشروع کنه؟
بازم ممنون

clover
پنج شنبه 21 دی 1391, 21:01 عصر
فقط 1 بار در ابتدا عوض بشه
ابتدا کجا هست؟ :)


برنامه که تموم شد
کجا تموم میشه؟


در واقع صفحه وب که بسته شد و از اول باز شد دوباره مقدار اولیه بگیره و از اول کارووشروع کنه؟
اینو به راحتی نمی تونید بفهمید، اگه چند تا تب باز بود چی؟ بین همه ی کاربران یا یک کاربر؟ دقیقا باید مشخص باشه