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

نام تاپیک: ارسال آرایه به یک متد در C#‎‎‎

  1. #1

    Exclamation ارسال آرایه به یک متد در C#‎‎‎

    با سلام
    در زبان c/C++‎‎‎ برای ارسال یک ارایه به داخل یک تابع
    در واقع اسم آرایه خودش یه اشاره گره که به عنوان یه آرگومان تابع استفاده میشه
    و میشه مثلا اندازه آرایه را هم به عنوان آرگومان دوم تابه استفاده کرد.
    سوالم اینچاست که توی سی شارپ چطوریه؟ یعنی یه راهی شبیه زبان c/C++‎‎‎
    که سریع باشه؟ کلا در این باره در زبان سی شارپ یکی راهنمایی کنه؟(آموزش بده)
    با تشکر فراوان

  2. #2

    نقل قول: سوال: ارسال آرایه به یک متد در C#‎‎‎

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

    برای مثال متغیر نوشتاری a را با “salam” مقدار دهی می کنم و به صورت پیغامی نشان می دهم.

    string a;a="salam"

    MessageBox.Show(a);


    این کد را در رویداد load فرم خود را درون کلید خود می توانید بنویسید.
    حال اگر در برنامه تعداد زیادی متغیر از یک نوع بخواهیم چه؟ آیا لازم است که به تعداد آن ها یکی یکی متغیر تعریف کنیم؟! نه ! می توانیم یک متغیر چند بعدی تعریف کینم . متغیر چند بعدی مانند یک جدول از متغیر های هم نوع عمل می کند .
    ابتدا به آرایه تک بعدی می پردازیم:

    نوع آرایه ][ نام آرایه;مثل : 
    int [] arrvar;
    حالا تعداد خانه ها را اینطور مشخص می کنیم:
    arrvar = new int[5];
    حالا 5 خونه در آرایه arrvar در اختیار داریم.

    حالا اگر بخواهیم به هر یک از خانه ها مقداری بریزیم یا به مقدار درون آن دسترسی داشته باشیم اینطور عمل می کنیم.


    arrvar[1] = 10
    درون خانه دوم از آرایه arrvar مقدار 10 را قرار دادیم.
    نکته: خانه های آرایه از ۰ شروع می شود / اولین خانه ۰ است


    می توان تعداد خانه ها را از ابتدا نیز تایین کرد :int var2 = new int [6];
    متغیر var2 با تعداد 6 خانه...
    البته می توان از ابتدا نیز مقادیری را درون خانه ها ذخیره کرد.
    int var3 = new int [5]{1,2,3,4,5};




    اگر بعد از نام آرایه .length قرار دهیم تعداد خانه های آرایه را بر می گرداند.

    مانند:
    MessageBox.Show{a.length.tostring());

    در کد بالا یک tostring() نیز می بینیم! یادتان هست که گفتیم در مسیج باکس ها باید از متغیر های نوشتاری استفاده کنیم؟ .length یک مقدار عددی را بر می گرداند . پس هر کجا خواستیم مقدار عددی را به نوشتاری تبدیل کنیم یک .tostring() به آن اضافه می کنیم.
    اما می توان آرایه ها را چند بعدی کرد . مثل آرایه دو بعدی زیر :


    int [,] var2d = new [2,3]{1,2,3,4,5,6};آرایه var2d  دارای دو خط و سه ستون ... برای مقدار دهی اولیه 1 2 و 3 در خط اول قرار می گیریند و 4 و 5 و 6 در خط دوم.
    برای دسترسی به هر خانه نیز اینگونه عمل می کنیم:
    var2d[2,2];
    خط دوم ، خانه دوم.

    فکر می کنم تا اینجای کار کافی باشد … اما نکته ای دیگر … از تولباکس یک کنترل label به فرم خود اضافه کنید و از منوی خصوصیات ، خصوصیت name را به label1 تغییر دهید .
    در برنامه ها برای ارائه اطلاعات به کاربر از این کنترل استفاده می کنیم .برای مثال به جای استفده از مسیج باکس اینگونه عمل می کنیم:



    label1.text = var2d[2,2];
    زمانی که این کد اجرا شود محتوی خانه 2در2 را نشان می دهد .

  3. #3
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,435

    نقل قول: سوال: ارسال آرایه به یک متد در C#‎‎

    نقل قول نوشته شده توسط pidexx مشاهده تاپیک
    با سلام
    در زبان c/C++‎‎‎ برای ارسال یک ارایه به داخل یک تابع
    در واقع اسم آرایه خودش یه اشاره گره که به عنوان یه آرگومان تابع استفاده میشه
    و میشه مثلا اندازه آرایه را هم به عنوان آرگومان دوم تابه استفاده کرد.
    سوالم اینچاست که توی سی شارپ چطوریه؟ یعنی یه راهی شبیه زبان c/C++‎‎‎
    که سریع باشه؟ کلا در این باره در زبان سی شارپ یکی راهنمایی کنه؟(آموزش بده)
    با تشکر فراوان
    آرایه در #C یک نوع Reference Type هست.وقتی یک شی آرایه رو به یک متد ارسال میکنید، یک Reference به اون شی به متد ارسال میشه.به این معنیه که تغییرات در متد، روی همون شی ارسالی اعمال میشه و کپی ای در کار نیست. (چیزی شبیه Reference ها در ++C). طول آرایه هم توسط متد Length آرایه در دسترس هست.

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    کنار یه ساحل خیلی زیبا
    پست
    922

    نقل قول: سوال: ارسال آرایه به یک متد در C#‎‎

    و در تکمیل مطالب بالا میتونی یه آرایه رو با کلمه params با طول نا مشخص هم پاس کنی و جالبتر اینکه با تعیین نوع object میتونی هرچی دوست داشتی روپاس کنی
     public void yourobjec(params object[] grade)
    {
    //.......
    }


    یا نه یه متد معمولی بنویسی مثلا
     public double averge(params double[] grade)
    {
    //.......
    double tem=0;
    int ctr = 0;
    foreach (double d in grade)
    {
    tem += d;
    ctr++;

    }
    double result = tem/ctr;
    return result;
    }

  5. #5

    نقل قول: سوال: ارسال آرایه به یک متد در C#‎‎

    نقل قول نوشته شده توسط plus مشاهده تاپیک
    آرایه در #C یک نوع Reference Type هست.وقتی یک شی آرایه رو به یک متد ارسال میکنید، یک Reference به اون شی به متد ارسال میشه.به این معنیه که تغییرات در متد، روی همون شی ارسالی اعمال میشه و کپی ای در کار نیست. (چیزی شبیه Reference ها در ++C). طول آرایه هم توسط متد Length آرایه در دسترس هست.
    گرفتم.حالا اگر بخوام یه کپی از آرایه بفرستم که تغییرات اعمالی روی آرایه ی درون تابع, باعث تغییر توی آرایه اصلی نشه چکار کنم؟

  6. #6

    نقل قول: سوال: ارسال آرایه به یک متد در C#‎‎

    نقل قول نوشته شده توسط esafb52 مشاهده تاپیک
    و در تکمیل مطالب بالا میتونی یه آرایه رو با کلمه params با طول نا مشخص هم پاس کنی و جالبتر اینکه با تعیین نوع object میتونی هرچی دوست داشتی روپاس کنی
     public void yourobjec(params object[] grade)
    {
    //.......
    }


    یا نه یه متد معمولی بنویسی مثلا
     public double averge(params double[] grade)
    {
    //.......
    double tem=0;
    int ctr = 0;
    foreach (double d in grade)
    {
    tem += d;
    ctr++;

    }
    double result = tem/ctr;
    return result;
    }
    آیا منظورت اینه که اگر برنامه را مثل اون سه خط اول بنویسیم اونوقت میتونیم هم یه آرایه مثلا int بفرستیم هم یه آرایه مثلا bool
    مثل این؟؟؟

    public void yourobjec(params object[] grade) {
    //.......
    }

    int[] iArray=new int[5];
    bool[] bArray=new bool[20]
    any code here....
    yourobj(iArray[]);
    yourobj(bArray[]);


    شکل استفادش همینطوره؟؟؟؟

  7. #7
    کاربر دائمی آواتار یونس ابراهیمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    کوهدشت
    سن
    38
    پست
    190

    نقل قول: سوال: ارسال آرایه به یک متد در C#‎‎


  8. #8
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,435

    نقل قول: سوال: ارسال آرایه به یک متد در C#‎‎

    نقل قول نوشته شده توسط pidexx مشاهده تاپیک
    گرفتم.حالا اگر بخوام یه کپی از آرایه بفرستم که تغییرات اعمالی روی آرایه ی درون تابع, باعث تغییر توی آرایه اصلی نشه چکار کنم؟
    باید با استفاده از متد CopyTo یک کپی از آرایه تهیه کنید و به متد مورد نظر ارسال کنید:

    int[] array = new int[10] { ... };
    int[] copyArray = new int[10];
    array.CopyTo(copyArray, 0);
    someMethod(copyArray);

  9. #9

    نقل قول: سوال: ارسال آرایه به یک متد در C#‎‎

    نقل قول نوشته شده توسط plus مشاهده تاپیک
    باید با استفاده از متد CopyTo یک کپی از آرایه تهیه کنید و به متد مورد نظر ارسال کنید:

    int[] array = new int[10] { ... };
    int[] copyArray = new int[10];
    array.CopyTo(copyArray, 0);
    someMethod(copyArray);
    مثل زبان qbasic که با byVal میشه اینکارو کرد , توی C#‎ هم راهی هست؟

  10. #10
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,435

    نقل قول: سوال: ارسال آرایه به یک متد در C#‎‎

    نقل قول نوشته شده توسط pidexx مشاهده تاپیک
    مثل زبان qbasic که با byVal میشه اینکارو کرد , توی C#‎ هم راهی هست؟
    تا اونجا که من میدونم غیر.برعکسش هست یعنی میتونید با استفاده از کلمه کلیدی ref، متغیرهای از نوع value-type رو به صورت ارجاعی بفرستید، ولی اینکه یک reference-type رو بخواین به صورت by-value بفرستید فکر نمیکنم راهی باشه.

تاپیک های مشابه

  1. سوال: ارسال آرایه ای به متد پلاگین جیکوئری
    نوشته شده توسط id1385 در بخش jQuery
    پاسخ: 1
    آخرین پست: چهارشنبه 06 آذر 1392, 17:18 عصر
  2. ارسال آرایه به متد
    نوشته شده توسط abbasalim در بخش Java SE : نگارش استاندارد جاوا
    پاسخ: 2
    آخرین پست: شنبه 05 اسفند 1391, 11:58 صبح
  3. مبتدی: ارسال آرایه به وب متد
    نوشته شده توسط elham366 در بخش jQuery
    پاسخ: 4
    آخرین پست: پنج شنبه 03 شهریور 1390, 15:36 عصر
  4. ارسال آرایه ها با مقدار و با مراجعه
    نوشته شده توسط mohandess_anita در بخش VB.NET
    پاسخ: 1
    آخرین پست: پنج شنبه 28 مهر 1384, 11:40 صبح
  5. مشکل با فرم های asp (مشکل ارسال اطلاعات فارسی با متد Get)
    نوشته شده توسط sma_mohseni در بخش Classic ASP
    پاسخ: 1
    آخرین پست: سه شنبه 17 خرداد 1384, 14:00 عصر

برچسب های این تاپیک

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

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