PDA

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



intermanch
چهارشنبه 24 خرداد 1391, 18:00 عصر
من می خوام تو یه کلاس کبه صورت زیر هست عمل جستجو انجام بدم:



class stu(){

int num;
string name;
string tel

public static arraylist st=new arraylis()


public add()
{}

public type search()
{}

public void remove()
{}


}




کلاسه رو مثال زدم اصلیش نیس اما کلاس دارای متد ادد و حذف و سرچ هست


وقتی تو محیط برنامه یک شی از کلاس میسازیم از اون ارایه ثابت هم ساخته میشه موقع ادد یا سرچ من فقط تابع مربوطه رو ران میکنم بدون ارسال پارامتر و فقط پارمترهای شی ساخته شده از کلاس رو ست میکنم

خب حالا وقتی کاربری ادد کنه مشکل ندارم

وقتی سرچ میکنیم ممکنه بعضی فیلدها خالی بمونه پس پارمترهای شی ساخته شده از کلاس خالی میمونه

خب من چطور میتونم بگم فلان پارمتر مساوی مقدار وارد کرده کاربر

البته میخام یه ارایه از فیلدهای کلاس بسازم و بگم ارایه خونه یک مساوی ورودی کاربر

اصلن این چنین چیزی شدنیه?!

شی درون کلاس St هست میخام بگم




stshomarande for]=shomarande for parametr class(=num)

st[shomarande for]=shomarande for parametr class

st[shomarande for]=shomarande for parametr class




و تا اخر

این کد نشون میده ک من هر رکورد فرضی رو تو ارایه 15 فیلدی در نظر گرفتم


for (int i = 0; i < sti.Count; i++)
{
for (int m = 0; i < 15; m++)
{
if (arayevalue[m] != "")
if (sti[m] == arayevalue[m])
eqfields++;



}


if (eqfields==arrsndaneshjo[i-1]) th++;


arrsndaneshjo[i] = sti[i * 15];

arrsndaneshjo.Sort();
arrsndaneshjo.Reverse();




}


میدونم با دیتابیس راحته با لیست جنریک راحته با استراکچر هم میشه اما نه من میخام رو ارایه کار کنم هدفه دیگه ای ندارم که دنبال راه اسون تر باشم پس در همین زمینه راهنمایی کنید

Saeed_m_Farid
پنج شنبه 25 خرداد 1391, 09:38 صبح
نمی شد یه بار خودتون این سینتکس ها رو تست و مرتب میکردین تا آدم رغبت کنه بخوندش؟ پر از غلطِ و بدخط ...
بگذریم:

میدونم با دیتابیس راحته با لیست جنریک راحته با استراکچر هم میشه اما نه من میخام رو ارایه کار کنم هدفه دیگه ای ندارم که دنبال راه اسون تر باشم پس در همین زمینه راهنمایی کنید
اگه نباید از جنریک استفاده کنی، پس ArrayList هم نباید استفاده بشه؛ چون تمام کارهایی (و بسیار بیشترش!) که شما میخوای انجام بدی با ArrayList میشه انجام داد و شما که میخوای راه سخت بری، نباید از این عصا هم استفاده کنی ...

ضمناً اگه میخوای یه آرایه از اشیاء از نوع stu درست کنی، پس ArrayList که تو کلاس static تعریف کردی چی هست؟ اون st آرایه ثابت نیست! (static هیچ ربطی به ثابت نداره، شاید از VB این مفهوم تو ذهنتون مونده، که اونجا هم اینطوری نیست!) و "وقتی تو محیط برنامه یک شی از کلاس میسازیم از اون ارایه ثابت هم ساخته" نمیشه، بلکه یه عضو static از کلاس stu شما هست که بدون نیاز به ساختن یک شیء stu میشه ازش نمونه ساخت، یعنی stu.st = new ArrayList(); و هیچوقت با ساختن یه شیء از کلاسی که توش یه عضو static هست، از عضو static نمونه ای ساخته نمیشه و همچنین نمیشه از شیء ساخته شده از کلاس موردنظر به عضو static دسترسی داشت؛ پس تو مثال شما کاملاً چیز بیربط و بدردنخوری هست!
اگه نمیخوای از امکانات ArrayList استفاده کنی و خودت تمام کارها رو از اول انجام بدی، باید یه کلاس مثلاً Student درست کنی که به یک شیء منفرد دانش آموز مختص باشه و بعدش واسه کار با آرایه قابل جستجو و اضافه و ... از اون کلاس یه کلاس دیگه درست کنی مثلاً بنام Students که متدهای add، search، remove، indexof و ... تو اون باشه، والّا کاری که شما کردی از پایه اشتباه هست:

class Student
{
int Number;
string Name;
string Tel;
}

class Students
{
private Student[] Items;
private int index = 0;

// سازنده
public Students(int count)
{
Items = new Student[count];
}

public void Add(Student stu)
{
Items[index++] = stu;
}

public Student Search(Student student)
{
foreach (Student item in Items)
if (student == item)
return item;
return null;
}

public void Remove()
{
//...
}

public void IndexOf(Student student)
{
//...
}

}

ولی اگه تمرین دانشجویی نیست! و می تونید از امکانات ArrayList یا List و ... بهره ببرین، فقط کافیه یه کلاس با همون عضوهایی که مدنظرتون هست درست کنید و اشیایی از نوع کلاس موردنظرتون به این نوع ها (مثلاً list.Add(stu)) اضافه کنید و از امکانات بیدریغ و مطمئن اونها استفاده کنید: ArrayList (http://www.dotnetperls.com/arraylist)