PDA

View Full Version : سوال: نشناختن اشیا در متد ؟



vB.N3T
چهارشنبه 17 آبان 1391, 15:47 عصر
[B]سلام دوستان من این کلاس رو نوشتم


class pesron
{
public string name;
public string fname;
public int age;



}

بعد به این صورت مقدار دهی کردم کلاسم رو


[LEFT] private void button1_Click(object sender, EventArgs e)
{
pesron one = new pesron();
one.name = "hamid";
one.fname = "amiri";
one.age = 23;

}


حالا یه متد نوشتم به این صورت برای نمایش اطلاعات کلاس

public void showinfo()
{
pesron f = new pesron();
label1.Text = f.name;
label2.Text = f.fname;
label3.Text = f.age.ToString() ;


}


بعد متد رو به این صورت صدا زدم

private void button2_Click(object sender, EventArgs e)
{
showinfo();
}

اما خوروجی فقط تو لیبل 3
0 چاپ میکنه

Mahmoud.Afrad
چهارشنبه 17 آبان 1391, 16:45 عصر
توی showinfo داری شئ جدید میسازی در صورتی که باید شئ ای که از قبل موجود هست رو نمایش بدی. ایجاد شئ person رو خارج از رویداد انجام بده تا در متد نمایش مشخصات هم قابل دسترس باشه:
person one = new person();

private void button1_Click(object sender, EventArgs e)
{
one.name = "hamid";
one.fname = "amiri";
one.age = 23;
}
public void showinfo()
{
label1.Text = one.name;
label2.Text = one.fname;
label3.Text = one.age.ToString();
}

vB.N3T
چهارشنبه 17 آبان 1391, 17:11 عصر
ممنون بله با اصلاح شما برنامه درست کار میکنه

چرا وقتی از کلاس نمونه سازی میکنیم و فیلد های کلاس رو پر میکنیم
برای متد باید از همون نمونه سازی استفاده کنیم؟؟؟

مثلا نمونه سازی اول ما این باشه

person one = new person();

بعد بیایم تو متد این نمونه سازی رو بنویسیم

person f = new person();

f هم به همون فیلد ها دسترسی داره؟؟ پس چرا نمیشه نمایش داد با متد اف

r_s1389@yahoo.com
چهارشنبه 17 آبان 1391, 17:15 عصر
نکنه درای اول داری باتن دو را کلیک میکنی چون اون وقت هیچی چاپ نمیشه
طبق کد شما اول باید باتن 1 بعد 2

r_s1389@yahoo.com
چهارشنبه 17 آبان 1391, 17:16 عصر
من یک توصیه به شما میکنم هیچ وقت متغییرها رو عمومی تعریف نکنید
چون در این صورت امنیت برنامه شما کم میشه

vB.N3T
چهارشنبه 17 آبان 1391, 17:42 عصر
خوب به نظرشما الان بهترین راه چیه ؟؟

من با این راه هم نوشتم
این کلاس برنامه

class person
{
public string name;
public string fname;
public int age;

}

اینم رویی داد کلیک

person one = new person();
one.name = "hamid";
one.fname = "amiri";
one.age = 23;
label1.Text = one.name;
label2.Text = one.fname;
label3.Text = one.age.ToString();

حالا سوالی که پیش میاد اینه ! چرا وقتی میتونیم به صورت مستقیم مقدار های کلاس رو بعد از مقدار دهی نمایش بدیم
براش متد بنویسیم که بیاد با متد این کار انجام بده! کد نویسی بیشتر میشه