تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 4 از 4

نام تاپيک: نحوه ارسال آرایه به متد

  1. #1
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    13 نحوه ارسال آرایه به متد

    سلام

    دوستان محترم مگر ما هنگامی که یک آرایه را به متد ارسال میکنم در اصل آدرس خانه اول رو ارسال کردیم؟
    در c++ که یادمه این طور بود که اسم رو میفرستادیم که میشد همان خانه اول آرایه(اشاره به خانه اول آرایه) و طول ارایه
    در سی شارپ وقتی اسم ارایه را می نویسیم چطور است؟ چطور طولش پس تشخیص مدهد؟

    و سوال اصلی که مربوط به سوال بالا هم میشه .اینجا آدرس رو فرستاده و در متد به صورت محلی 5 تا خونه تغیر داده شده با عناصر آن
    اما تغیرات اعمال نشده! اما 1 دانه رو تغیر داده و تغیر روش اعمال شده.
    منظور از ارسال با مقدار را میدانم اما این ارایه هست. و اسم ان که ادرس خانه اول هست ارسال شده است
    منظور از ارسال ارجاع با مقدار چیست؟ اگر ارجاع هست پس مقدارش چیست؟
    class PassingRefByVal
    {
    static void Change(int[] pArray)
    {
    pArray[0] = 888; // This change affects the original element.
    pArray = new int[5] {-3, -1, -2, -3, -4}; // This change is local.
    System.Console.WriteLine("Inside the method, the first element is: {0}", pArray[0]);
    }

    static void Main()
    {
    int[] arr = {1, 4, 5};
    System.Console.WriteLine("Inside Main, before calling the method, the first element is: {0}", arr [0]);

    Change(arr);
    System.Console.WriteLine("Inside Main, after calling the method, the first element is: {0}", arr [0]);
    }
    }
    Last edited by Life24; 26-08-2013 at 15:01.

  2. #2
    کاربر فعال انجمن دات نت عــــلی's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    زیر سایه عرش الهی
    پست ها
    2,335

    پيش فرض

    بسم الله الرحمن الرحیم
    سلام.
    ارسال یک آرایه به یک متد مثل ارسال یک کلاس به متد میمونه.شما میتونی از توی متد جدید، یک اشاره گر جدید بسازی بدون اینکه مقدار اشاره گر ارسال شده به متد رو تغییر بدی.یعنی شما نمیتونی کلاسی به یک متد ارسال کنی و اونو جدید کنی و در حافظه جای بدی(Replace اشاره گر قبلی بشه).برای اینکار باید اشاره گرت رو رفرنس بدی با سینتکس ref و یا میتونی با out خروجی بگیری.فرقشم اینه که out حتماً باید مقدار دهی کنید و مقدارش هم حتماً باید از نوع داده ای باشه که مقدارش رو میفرستید.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    راستی کدهاتونو همیشه توی تگ کد بذارید تا خوانا تر و چپ به راست بشه.
    موفق و سربلند باشید در پناه حق.

  3. این کاربر از عــــلی بخاطر این مطلب مفید تشکر کرده است


  4. #3
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض

    سلام
    ممنون علی آقا
    ببنید بیشتر منظور من این هست که وقتی ما از ref و out استفاده نمیکنیم.و آرایه رو می نویسم.دقیقا چی ارسال میشه؟
    آدرس اولین خانه آرایه ارسال میشه؟
    وقتی از کلمه ref استفاده کنیم.چی ارسال میشه؟
    ببنید در کد زیر با کلمه new یک اشاره گر تولید کرده و انتصاب داده به آرایه و اعمال شده داخلش.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اما اینجا ref رو که نمی نویسیم مگر چی ارسال میشه که اشاره گر جدید رو قبول نمی کنه اما اعمال تغیر به خانه ها رو میده.اینجا الان خانه اول آرایه تغیر کرده برای همیشه با اینکه خبری از ref نیست
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  5. #4
    کاربر فعال انجمن دات نت عــــلی's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    زیر سایه عرش الهی
    پست ها
    2,335

    پيش فرض

    بسم الله الرحمن الرحیم
    سلام.
    ببینید شما وقتی یک آبجکت حالا هرچیزی که باشه رو به متد ارسال میکنید خود کامپایلر تشخیص میده که نیاز به ساخت اشاره گر جدید هست یا نه.مثلاً برای کلاس ها نیاز به ساخت نیست.شما وقتی یک آرایه رو میفرستی خود آرایه یک اشاره گر هست و آیتم های داخلش اشاره گر های دیگری هستن.مثل این میمونه که یک کلاس رو با محتویاتش به متد ارسال کنید.
    حال اگر کلاس رو به صورت رفرنس بفرستی در صورت تازه سازی کردن توی اشارگر قبلی Replace میشه.یعنی آدرسش تغییر نمیکنه ولی محتویاتش تغییر میکنه.اما وقتی بدون رفرنس بفرستی و new کنی یک اشاره گر جدید ازش در حافظه ساخته میشه.

  6. این کاربر از عــــلی بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •