View Full Version : دسترسی به متغیر در کلاس های داخلی Nested Class
mfaridi
شنبه 08 تیر 1392, 20:56 عصر
سلام
چطور میتونم یه متغیر معرفی کنم که تو کل کلاسم باشه و همه زیر کلاس های اون بتونن استفاده کنن نمیخوام از static استفاده کنم شما راهی بلدید؟
class Class1
{
class class2
{
}
}
keyvan_s89
شنبه 08 تیر 1392, 21:00 عصر
public int a;
هر متقیری رو که public بگیری میتونی تویه بدنه کلاس هم ازش استفاده کنی.
mfaridi
شنبه 08 تیر 1392, 21:02 عصر
من تو بدنه کلاس1 همین کار رو میکنم ولی توی کلاس 2 این متغیر نیست این راه رو قبلا تست کردم نشد
uthman
شنبه 08 تیر 1392, 21:06 عصر
سلام
برای دسترسی به فیلدی که داخل کلاس دیگری است به روش زیر عمل کن
نام متغییر.نام کلاس2.نام کلاس1
class car{
class radio
{
public int volum;
}
}
car1radio.volum
mfaridi
شنبه 08 تیر 1392, 21:19 عصر
این کد اخری ضاهرا درست نیست
uthman
شنبه 08 تیر 1392, 21:52 عصر
public class one
{
public one()
{
}
public string x;
public class two:one{
one nn = new one();
public two()
{
nn.x = "vale";
}
}
}
mfaridi
چهارشنبه 30 مرداد 1392, 19:14 عصر
ممنون از اقای othmanولی راه بهتری نیست؟
amir200h
چهارشنبه 30 مرداد 1392, 19:40 عصر
برای اینکه متغیرهای کلاس 1 رو بتونی تو کلاس 2 استفاده کنی باید از کلاس 1 در کلاس 2 مشتق بگیری
Mahmoud.Afrad
چهارشنبه 30 مرداد 1392, 19:54 عصر
مسئله با ارسال ارجاع حل میشه و هیچ نیازی به ارث بری و تغییر سطح دسترسی نیست.
توی کلاس داخلی یک ارجاع به کلاس خارجی ایجاد کنید و در سازنده توسط پارامتر ورودی ، اونو ست کنید.
داخل کلاس خارجی ، هر جا از کلاس داخلی شئ جدید new کردی ، this را ارسال کنید.
class MyClass
{
private int a;
public void GetObjField()
{
NestedClass n = new NestedClass(this);
n.ShowMsg();
}
class NestedClass
{
private MyClass obj = null;
internal NestedClass(MyClass m)
{
obj = m;
}
internal void ShowMsg()
{
MessageBox.Show(obj.a.ToString());
}
}
}
همونطور که می بینید a از obj قابل دسترس هست چون obj همان شئ از کلاش خارجی است.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.