نمایش نتایج 1 تا 12 از 12

نام تاپیک: اشاره گر به اعضای کلاس

  1. #1

    اشاره گر به اعضای کلاس

    من کلاس زیر رو ایجاد کردم
    public static class a
    {
    public static class b
    {
    public static int c = 10; //Field
    public static void d() //Method
    {
    //body
    }
    }
    }


    حالا هر وقت بخوام به فیلد c دسترسی داشته باشم مجبورم به شکل زیر عمل کنم
    int C = a.b.c;


    و هر وقت بخواهم متد d را صدا بزنم مجبورم کد زیر رو بنویسم
    a.b.d();


    اولا" ) به نظر شما چطوری می تونم متغییر تعریف کنم که به فلید c اشاره کنه ؟
    دوما" ) به نظر شما راهی وجود داره برای صدا زدن متد d کد خلاصه تری نوشت؟

  2. #2

    نقل قول: اشاره گر به اعضای کلاس

    دوست عزیز بهتر نبود به جای این کار از وراثت استفاده می کردی ...


    public class a
    {
    .
    .
    .
    }

    public class b : a
    {
    int c=10;
    }

  3. #3

    نقل قول: اشاره گر به اعضای کلاس

    من برای رسیدن به جواب برای سوال اولم این راه رو رفتم ولی به خطا بخورد کردم
    unsafe
    {
    int * p;
    p = a.b.&c;
    }


    به نظر شما اصلا امکان تعریف کردن اشارگر به جنس کلاس وجود داره؟

  4. #4

    نقل قول: اشاره گر به اعضای کلاس

    دوست عزیز بهتر نبود به جای این کار از وراثت استفاده می کردی ...
    این کلاس رو من به صورت مفرض مطرح کردم که بتونم سوالم رو طرح کنم والا برای رسیدن به هدف n راه وجود داره که مطمئنا" راه مستقم کوتاه ترین مسیره ولی من می خواستم راه های دیه رو تجربه کنم

    با تشکر از حسن توجه جنابعالی

  5. #5

    نقل قول: اشاره گر به اعضای کلاس

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

    توی زبان ++C می تونستیم ثابت هایی تعریف کنیم که قبل از کامپایل شدن برنامه عمل جایگزینی در کد رو انجام میداد به شکلی که مثلا در کد زیر
    #define D a.b.d() 

    این کد در ++C باعث میشد قابل از کامپایل برنامه هر جایی در کد برنامه نویس کلمه D رو دید بیاد و کلمه a.b.d() رو جایگزین کنه و بعد عمل کامپایل رو انجام میداد حالا من نمی دونم از این روش میشه توی #C استفاده کرد یا نه؟

  6. #6
    کاربر دائمی آواتار SMRAH1
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    مشهد
    پست
    884

    نقل قول: اشاره گر به اعضای کلاس

    سلام
    من تا حالا در #C راه کاری برای دسترسی سریع تر به اشای داخل یک کلاس (مثل with در VB یا defineدر C و ..) ندیدم!
    در ضمن کد
    int * p;

    و در کل اشاره گر ها در #C هم وجود دارند ولی باید وجود اونها رو صرحا به برنامه اعلام کنی.به اینگونه کد ها در #C،کد unsafe گفته می شه.برای ایجاد کد unsafe باید اولا در هنگام نوشتن دستورات ،صریحا این رو مشخص کنی مثلا یک روش اینه :
    using System;
    class UnsafeTest
    {
    // Unsafe method: takes pointer to int:
    unsafe static void SquarePtrParam(int* p)
    {
    *p *= *p;
    }

    unsafe static void Main()
    {
    int i = 5;
    // Unsafe method: uses address-of operator (&):
    SquarePtrParam(&i);
    Console.WriteLine(i);
    }
    }

    ثانیا در تنظیمات کامپایلر گزنیه allow unsafe code رو تیک بزی (Project > YourProjectName properties> Build).

    برای اطلاعات بیشتر به MSDN مراجعه کن.

    موفق باشی

  7. #7

    نقل قول: اشاره گر به اعضای کلاس

    کل اشاره گر ها در #C هم وجود دارند ولی باید وجود اونها رو صرحا به برنامه اعلام کنی.به اینگونه کد ها در #C،کد unsafe گفته می شه.برای ایجاد کد unsafe باید اولا در هنگام نوشتن دستورات ،صریحا این رو مشخص کنی
    خوب منم در تنظیمات کامپایلر گزنیه allow unsafe code رو تیک زدم و اگه دقت میکردین کدهام رو توی بلوک unsafe قرار دادم ولی وقتی می خوهم مقصد اشارگر تعریف شده را تنظیم کنم نمی دونم چطوری باید این کار رو انجام بدم
    مثلا" برای متغییر های معمولا کد زیر باعث میشه اشارگر p به منبع متغییر var اشار کنه
    int* p,var;
    p=&var;


    حالا من می خوام به جای متغییر var یک فیلد استاتیک از یک کلاس رو قرار بدم ولی نمی دونم نوع اشارگرم رو چی باید در نظر بگیرم و از عملگر & کجا و به چه شکلی استفاده کنم

  8. #8

    نقل قول: اشاره گر به اعضای کلاس

    دوست عزیز من فکر کنم با fixed مشکل شما حل بشه.

    چون کلاس ها در حافظه توسط garbage collector جابه جا می شن. شما باید این حافظه را ثابت نمایید...

  9. #9

    نقل قول: اشاره گر به اعضای کلاس

    نقل قول نوشته شده توسط alireza_tavakol مشاهده تاپیک
    من برای رسیدن به جواب برای سوال اولم این راه رو رفتم ولی به خطا بخورد کردم
    unsafe
    {
    int * p;
    p = a.b.&c;
    }


    به نظر شما اصلا امکان تعریف کردن اشارگر به جنس کلاس وجود داره؟

    fixed ( int* p = &a.b.c )
    {
    .
    .
    .
    }

  10. #10

    نقل قول: اشاره گر به اعضای کلاس

    یک دنیا تشکر ( مشکل اول من حل شد ) .

    حال به نظر شما چرا garbage collector اشیا ساخته شده از کلاس ها رو توی حافظه جا به جا مکنه ؟ ( برای جلوگیری از fragmentation )

    راستی اگه راه کاری واسه دسترسی خلاصه تر به متد های کلاس های nested پیدا کردی بی خبرم نگذار ، بازم سپاس گذارم

  11. #11

    نقل قول: اشاره گر به اعضای کلاس

    این کار برای مدیریت و بهینه سازی اشیا در داخل حافظه heap است.

  12. #12
    کاربر تازه وارد آواتار samirdev
    تاریخ عضویت
    تیر 1386
    محل زندگی
    GAC
    پست
    56

    نقل قول: اشاره گر به اعضای کلاس

    یه روش دیگه برای خلاصه سازی:

    در اول کد وارد کنید :
    using abstract = a.b;

    حالا می توان به جای a.b از abstract استفاده کرد.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •