PDA

View Full Version : سوال: پیدا کردن یک شی



mojde_171261
سه شنبه 15 مرداد 1387, 09:13 صبح
با سلام,
من یه حلقه while دارم که به ازای هر بار چرخش اون یک شی ایجاد می شه که نام شی ثابت است اما پروپرتی هایی که به اون میدم متفاوت هست به صورت زیر:


(while(condition
}
;()classname obj= new classname
مقادیر متفاوت//;obj.name=variable value

{


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


پیشاپیش از کمکتون ممنون!!!!

اَرژنگ
سه شنبه 15 مرداد 1387, 15:48 عصر
با سلام,
من یه حلقه while دارم که به ازای هر بار چرخش اون یک شی ایجاد می شه که نام شی ثابت است اما پروپرتی هایی که به اون میدم متفاوت هست به صورت زیر:


(while(condition
}
;()classname obj= new classname
مقادیر متفاوت//;obj.name=variable value

{


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


پیشاپیش از کمکتون ممنون!!!!


همینطوری که نمیشه، باید اشاء را در یک لیستی و یا یک آرایه نگهداری کنید.
منتها دلیل اینکه همچین مشکلی دارید برام مبهم است، روشی که استفاده میکنید تا جایی که میبینم معنی نمیده.
شاید دیکشنری چیزی است که دنبالش میگردید ولی بدانه دانستن دلیل این کار بیشتر از این نمیشه راهنمائی کرد.

subsub
سه شنبه 15 مرداد 1387, 20:27 عصر
با سلام,
من یه حلقه while دارم که به ازای هر بار چرخش اون یک شی ایجاد می شه که نام شی ثابت است اما پروپرتی هایی که به اون میدم متفاوت هست به صورت زیر:


(while(condition
}
;()classname obj= new classname
مقادیر متفاوت//;obj.name=variable value

{


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


پیشاپیش از کمکتون ممنون!!!!


باید آرایه‌ای از شی ایجاد کنی. برای دسترسی به هر شی‌ء باید از index استفاده کنی.

رضا جاسبی
سه شنبه 15 مرداد 1387, 21:38 عصر
استنباط من از صورت مساله چیزی شبیه لیست پیوندی می تونه باشه البته تا جایی که می دونم لیست پیوندی Node بعدی رو نگه می داره نه قبلی رو. در واقع چیزی که شما می گی شبیه Parent هست. به هر حال راه ساده ای وجود داره و اون اینکه مقدار هر Object رو در یک متغیر دیگر از همون نوع نگه داری و در اجرای بعدی حلقه بهش دسترسی داری. فقط یک if کنترلی کوچک داشته باشی که بار اول حلقه چیزی اضافه نکنی.

mojde_171261
پنج شنبه 17 مرداد 1387, 08:38 صبح
با سلام ,
قبل از هرچیز ممنونم از راهنمایی شما , راستش رو بخواید من خودم هم مقادیر را در آرایه نگه داشته بودم اما می خواستم ببینم برای این کار راه منطقی تری هم وجود داره یانه(همونطور که در دلفی وجود داره) .
در مورد نوع برنامه هم باید بگم کلاس مورد نظر مربوط به گزارش ساز fast report هست که من برای پاس دادن کوئری ها به اون در مسئله مستر و دیتیل مجبور بودم شی ایجاد شده از کلاس مستر رو که به گزارش ساز پاس داده شده رو به شی از کلاس دیتیل که باید مسترش مشخص باشه نسبت بدم( که هر دو با روش بالا و در حلقه while ایجاد می شه و تازه تو حلقه معلوم می شه که کدوم مستر و کدوم دیتیل است شاید هم شی وجود داشته باشه که هم مستر وهم دیتیل باشه) ....
نمی دونم فهمیدین چی می گم یا نه
موفق باشید ...

afsharm
پنج شنبه 17 مرداد 1387, 08:57 صبح
یک راه دیگه اینه که یک متغیر بیرون از حلقه داشته باشید و هر دفعه مقدار آبجکت جدید رو توی اون نگه دارین. به این ترتیب در دور بعدی می‌توانید از آن به عنوان مقدار قبلی استفاده کنید. اینطوری:

classname preVal=null;
while(condition
}
;()classname obj= new classname
مقادیر متفاوت//;obj.name=variable value

obj.preVal = preVal;

preval=obj;
{
------------------------------------------
اگه می‌خواهید اونها را در یک لیست نگه دارید به نیم اسپیس Collections هم نگاهی بندازید اونجا پر از کلاس‌هایی که برای نگه داشتن لیست‌های مختلفی استفاده می‌شوند و استفاده از اونها خیلی هم راحته.