PDA

View Full Version : سوال: کپی آرایه ای در آرایه دیگر



rasol_afkham
یک شنبه 22 تیر 1393, 23:48 عصر
یه آرایه داریم به نام A و یه آرایه به نام B. آرایه B را مساوی آرایه A قرار می دهیم (B = A). مقدار عناصر B را تغییر می دهیم. مقدار همان عنصر در آرایه A هم تغییر می کند. چطور می توان آرایه ای را در آرایه دیگر کپی کرد، که با تغییر عناصر آرایه دوم، عناصر آرایه اول تغییری نکنند؟:متفکر:

mh3242
یک شنبه 22 تیر 1393, 23:54 عصر
با این کاری که شما کردین و توضیحی که دادین فکر کنم کاری که B=A انجام میده اینه که تو آرایه B آدرس جایی که مقادیر آرایه A قرار داره رو میریزه. بنابراین وقتی که شما مقادیر آرایه B رو تغییر میدین در واقع دارین مقادیر آرایه A رو به وسیله آدرسشون تغییر میدین. اگه حدس من درست باشه بهتره که بجای استفاده از عملگر = با استفاده از یه حلقه مقادیر آرایه A رو به آرایه B انتصاب بدین.

plus
یک شنبه 22 تیر 1393, 23:54 عصر
وقتی از عملگر انتساب استفاده کنید فقط Reference شی دوم رو به متغیر اول نسبت میدین.برای کپی مقادیر، از متد

Array.Copy

استفاده کنید.البته آرایه مقصد باید به اندازه کافی فضا داشته باشه.

rasol_afkham
دوشنبه 23 تیر 1393, 00:04 صبح
Array.Copy
کل آرایه رو کپی می کنه، حالا اگه آرایه اول ما خانه های زیادی داشته باشه و بخواهیم تنها یک خانه از آرایه را کپی کنیم باید چه کار کرد. فرض کنید آرایه ما 10 خانه دارد و می خواهیم خانه هتم آرایه را در متغیری از نوع همان آرایه کپی کنیم. دوست خوبمون mh3242 (http://barnamenevis.org/member.php?337111-mh3242) هم درست می گه می توان تمام عناصر موجود در آرایه را به صورت مجزا در دومی بریزیم. امام راه بهتری هم هست؟

mh3242
دوشنبه 23 تیر 1393, 00:05 صبح
خب میتونی:
b[0]=a[7];
و برای متغیر هم
x=a[7];

rasol_afkham
دوشنبه 23 تیر 1393, 00:15 صبح
با این کاری که شما کردین و توضیحی که دادین فکر کنم کاری که B=A انجام میده اینه که تو آرایه B آدرس جایی که مقادیر آرایه A قرار داره رو میریزه. بنابراین وقتی که شما مقادیر آرایه B رو تغییر میدین در واقع دارین مقادیر آرایه A رو به وسیله آدرسشون تغییر میدین. اگه حدس من درست باشه بهتره که بجای استفاده از عملگر = با استفاده از یه حلقه مقادیر آرایه A رو به آرایه B انتصاب بدین.

همانطور که گفتید کاراکتر = آدرس رو در متغیر می ریزه نه مقداری که داخل عناصر ذخیره شده. آرایه من از نوع کلاس هست و هر عنصر خود دارای متغیرهای زیادی هست. می خواهم یکی از خانه های آرایه (که چون از نوع کلاسی هست که تعریف نمودم و متغیرهای زیادی داره ) رو در متغیری از نوع همین کلاس برزیم و آنها را تغییر بدهم، ولی مقادیر داخل آرایه تغییری نکنند.

mh3242
دوشنبه 23 تیر 1393, 00:18 صبح
ببین شما میتونین عملگر = رو برای کلاستون override کنید تا کار دلخواهتونو براتون انجام بده. یه سرچ بزن برای over ride کردن خودتون متوجه میشین.

mh3242
دوشنبه 23 تیر 1393, 00:20 صبح
یا اینکه یه نمونه ار کلاستون بسازین و خونه مورد نظرتون تو آرایه رو به این نمونه انتصاب بدین. ایجوری مقادیر ذخیره میشه نه مراجع

aliagamon
دوشنبه 23 تیر 1393, 13:22 عصر
اگه مقدار یک خونه از ارایه رو بریزین تو یه خونه از ارایه دوم این مشکل پیش نمیاد ... چون به مقدار عددی دسترسی دارین نه به شی ..