PDA

View Full Version : سوال: طریقه کپی گرفتن از آرایه



Reza_Yarahmadi
جمعه 19 تیر 1388, 10:28 صبح
سلام
توی برنامه ام نیاز دارم که از یک آرایه کپی بگیرم و روی کپی تغییراتی اعمال کنم ولی مشکل اینجاست که تغییرات روی آرایه اصلی هم اعمال میشه و ...
من به دو صورت زیر برای کپی گرفتن استفاده میکنم (که البته هر دو کار نمیکنه!!)


string[] str1;
//...
string[] str2 = str1
//or
str1.CopyTo(str2,0)

Salar Ashgi
جمعه 19 تیر 1388, 10:57 صبح
سلام ، چون داده string یک آبجکت از کلاس String است و عموما تو بحث OOP ، آبجکت کلاس ها رو

نمیشه با انتساب ، مساوی هم قرار داد !!!

مثال : مثلا کلاسی مثل Matrix داریم :


Matrix M1 = new Matrix();
Matrix M2 = new Matrix();
M1=M2;//is not true


کد مورد نظر شما :


string [] a = new string[5];
string [] b = new string[5];
//we want to copy from a
for(int i=0;i<5;i++)
b[i] = a[i];


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

Reza_Yarahmadi
جمعه 19 تیر 1388, 17:39 عصر
اینو میدونم که دستور انتساب در این حالت فقط اشاره گر آرایه ها رو برابر میکنه یعنی دو آرایه به یک آدرس اشاره می کنن و ... (که دقیقا مشکل منم همینه!)
ولی در رابطه با حلقه ای که گفتید مشکل من اینه که در واقع نوع آرایه من یک ساختمان (Struct) است که خود این ساختمان از آرایه هایی از ساختمانهای دیگه تشکیل میشه و باز اونها ... خلاصه بگم آرایه مورد استفاده من یک آرایه 4 بعدی ناهمواره و با یک حلقه ساده نمیشه داده هاشو منتقل کرد.
بالاخره باید توی این زبان یه دستوری ، یه روشی ، یه چیزی وجود داشته باشه که مشکل منو حل کنه! :چشمک:

Reza_Yarahmadi
شنبه 20 تیر 1388, 09:49 صبح
دوستان نمیخوان در رابطه با مشکل من کمک کنن؟ :ناراحت:

Xcalivorse
شنبه 20 تیر 1388, 12:49 عصر
اینو میدونم که دستور انتساب در این حالت فقط اشاره گر آرایه ها رو برابر میکنه یعنی دو آرایه به یک آدرس اشاره می کنن و ... (که دقیقا مشکل منم همینه!)
ولی در رابطه با حلقه ای که گفتید مشکل من اینه که در واقع نوع آرایه من یک ساختمان (Struct) است که خود این ساختمان از آرایه هایی از ساختمانهای دیگه تشکیل میشه و باز اونها ... خلاصه بگم آرایه مورد استفاده من یک آرایه 4 بعدی ناهمواره و با یک حلقه ساده نمیشه داده هاشو منتقل کرد.
بالاخره باید توی این زبان یه دستوری ، یه روشی ، یه چیزی وجود داشته باشه که مشکل منو حل کنه!
سلام دوست عزيز. از دستور زير استفاده كن.



int[] BaseArray = newint[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
object o = BaseArray.Clone();
int[] SecondArray = (int[])o;