PDA

View Full Version : مبتدی: کار با متغیر



Changer
یک شنبه 30 تیر 1392, 21:15 عصر
خیلی با کار با فیلد ها مشکل دارم فیلد را تعریف می کنم ولی توی کلاس دیگه بهش دسترسی ندارم
یا برای فیلد های ارایه ای نمی تونم سطح دسترسی تعریف کنم
فیلد==همان متغیر خودمان

mori5858
یک شنبه 30 تیر 1392, 21:25 عصر
كلاس يا متغير رو public تعريف كن

Changer
یک شنبه 30 تیر 1392, 21:38 عصر
اگر ارایه بود

sohil_ww
یک شنبه 30 تیر 1392, 21:53 عصر
فرقی نداره عزیز دل چه ارایه باشه چه استرینگ چه هر نوع دیگه ای بود اگه اونو public تعریف کنی تو تمام برنامت بهش دسترسی داری

esafb52
یک شنبه 30 تیر 1392, 22:31 عصر
برای فیلد از پراپرتی استفاده کن و هرجا هم که خواستی میتونی ازش استفاده کنی برای آرایه ها هم فکر کنم بتونی از ایندکسر استفاده کنی اگه متوجه نشدی بگو یه نمونه کد برات بنویسم

syntiberium
یک شنبه 30 تیر 1392, 22:50 عصر
باید public static استفاده کنی public تنها اگر استفاده کنی به متغیر دسترسی داری ولی به مقدار داخلش دسترسی نداری . (static باعث می شه حتی اگر اون کلاس رو صدا نزنی متغیر static داخلش ایجاد بشه و فضا اِشغال کنه)

Mahmoud.Afrad
دوشنبه 31 تیر 1392, 06:42 صبح
باید public static استفاده کنی public تنها اگر استفاده کنی به متغیر دسترسی داری ولی به مقدار داخلش دسترسی نداری .
حرفتون کاملا اشتباست. یعنی چی به متغیر دسترسی داره ولی به مقدارش نه؟!!!

shadi khanum
دوشنبه 31 تیر 1392, 08:30 صبح
دوست عزیز شما اگر توی کلاست peoperty تعریف کنی که توی set و Get اون اون متغیر private کلاستون رو مقداردهی کنید و برگردونید به راحتی میتونی از توی هر کلاسی بهش دسترسی داشته باشی منتها اول باید یه شی از اون کلاس داشته باشی

syntiberium
دوشنبه 31 تیر 1392, 21:28 عصر
حرفتون کاملا اشتباست. یعنی چی به متغیر دسترسی داره ولی به مقدارش نه؟!!!
شما با public تنها چجوری می تونید یک مقدار رو با استفاده از یک متغیر از مثلا form1 به form2 منتقل کنید ؟

mv7777
دوشنبه 31 تیر 1392, 22:48 عصر
با سلام
من یک مشکل داشتم که شاید زیاد با این تاپیک مرتبط نباشه اما ترجیح دادم که تاپیک جدید باز نکنم .
من یک متد می خوام بنویسم که با گرفتن آدرس یک فولدر تمام زیر فولدرهای (sub directory) اون رو برگردونه اما خطا می ده که تمام مسیرهای موجود نوع بازگشتی از نوع string رو بر نمی گردونه لطفا راهنمایی کنید :
(public string subdirectory(string a
{

;string[] subdirlist
;(subdirlist = Directory.GetDirectories(a

(""==[if (subdirlist[0
;(return (a
else
{
(++for (int i = 0; i < subdirlist.Length; i
{
;[string b = subdirlist[i
;((return (subdirectory(b
}
}

}

Mahmoud.Afrad
سه شنبه 01 مرداد 1392, 13:09 عصر
شما با public تنها چجوری می تونید یک مقدار رو با استفاده از یک متغیر از مثلا form1 به form2 منتقل کنید ؟
بهتره تعریف سطح دسترسی و static رو مطالعه کنید.
وقتی شما به شئ دسترسی داشته باشید تمام فیلدها و پراپرتی های public اون شئ هم در دسترس هست.
اما در مورد فرم ها فقط اول باید به فرم دسترسی داشته باشید.

public partial class Form2 : Form
{
int a;

public int A
{
get { return a; }
set { a = value; }
}

public Form2()
{
InitializeComponent();
}
}

به اینصورت هم به پراپرتی A دسترسی دارید:

foreach (Form f in Application.OpenForms)
{
if (f is Form2)
{
Form2 frm = f as Form2;
////////
frm.A = 12;
}
}

syntiberium
سه شنبه 01 مرداد 1392, 15:56 عصر
بهتره تعریف سطح دسترسی و static رو مطالعه کنید.
وقتی شما به شئ دسترسی داشته باشید تمام فیلدها و پراپرتی های public اون شئ هم در دسترس هست.
اما در مورد فرم ها فقط اول باید به فرم دسترسی داشته باشید.

public partial class Form2 : Form
{
int a;

public int A
{
get { return a; }
set { a = value; }
}

public Form2()
{
InitializeComponent();
}
}

به اینصورت هم به پراپرتی A دسترسی دارید:

foreach (Form f in Application.OpenForms)
{
if (f is Form2)
{
Form2 frm = f as Form2;
////////
frm.A = 12;
}
}

اونوقت مثلا یک آرایه ی دو بعدی و یک لیست دو بعدی رو هم می شه از همین راهی که مثال زدید منتقل کرد ؟ چجوری ؟ درضمن وقتی با static انقدر راحت می شه توی 2 خط یه مقدار رو انتقال داد چرا 8 خط کد بنویسیم ؟

Mahmoud.Afrad
سه شنبه 01 مرداد 1392, 22:20 عصر
اونوقت مثلا یک آرایه ی دو بعدی و یک لیست دو بعدی رو هم می شه از همین راهی که مثال زدید منتقل کرد ؟ چجوری ؟ درضمن وقتی با static انقدر راحت می شه توی 2 خط یه مقدار رو انتقال داد چرا 8 خط کد بنویسیم ؟
شما باید بدونید که کلاس ها محدود به فرم ها نیستند. شاید در مورد فرم ها فکر کنید نیازی نباشه چون یک نمونه از هر فرم ایجاد میکنید اما باید بدونید که فیلد استاتیک بین همه اشیاء یک کلاس مشترک هست. شما کلاس Person را فرض کنید که اسم و فامیل و سن و ... داره. در اینصورت به هیچ وجه نمیتونید فیلدها یا پراپرتی ها رو استاتیک کنید چون هر شخص اسم و فامیل و سن متفاوتی داره در صورتی که مثلا اگر سن را استاتیک بگیرید این سن بین همه اشخاص یکسان خواهد بود که درست نیست.

در مورد ارسال آرایه و لیست بین فرم ها هم باید بگم فرقی نداره طبق مثال پست قبلی عمل کنید منتها نوع را به جای int از نوع آرایه و یا لیست و ... در نظر بگیرید.

mv7777
چهارشنبه 02 مرداد 1392, 23:17 عصر
با سلام
من یک مشکل داشتم که شاید زیاد با این تاپیک مرتبط نباشه اما ترجیح دادم که تاپیک جدید باز نکنم .
من یک متد می خوام بنویسم که با گرفتن آدرس یک فولدر تمام زیر فولدرهای (sub directory) اون رو برگردونه اما خطا می ده که تمام مسیرهای موجود نوع بازگشتی از نوع string رو بر نمی گردونه لطفا راهنمایی کنید :
(public string subdirectory(string a
{

;string[] subdirlist
;(subdirlist = Directory.GetDirectories(a

(""==[if (subdirlist[0
;(return (a
else
{
(++for (int i = 0; i < subdirlist.Length; i
{
;[string b = subdirlist[i
;((return (subdirectory(b
}
}

}
کسی نظری در مورد مشکل من نداره ؟