ايران ويج

نسخه‌ی کامل: دستور كليدي براي آرايه ها ؟
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام خدمت همه دوستان گرامي و محترم :
چند تا سوال داشتم؟؟
1) ref و out در پارامترهاي آرايه چه فرقي باهم دارند ؟
.........
اگر مثلا ما يك متغير در برنامه تعريف كنيم و نخواهيم مقدار آن متغير در آرايه مستقيم تغيير كند از ref يا out استفاده مي كنيم .
و اما ref : حتما بايد متغيير قبلش مقدار دهي شده باشد ؟
و اما out : مي تواند متغيير قبلش مقدار دهي نشود ؟

2) من يك نمونه برنامه پيوست كردم ، لطفا دوستان عزيز ببينند و براي من توضيح بدهند كه چرا جاي كلمه كليدي ref در پارامتر هاي آرايه ، از كلمه كليدي out استفاده مي كنم ، برنامه با Error مواجه مي شود ؟

پيشاپيش از راهنمايي شما دوستان گرامي سپاسگزارم .
سلام دوستان :
يعني واقعا كسي از دوستان نيست كه به اين سوال پاسخ بده ؟
جالبه !
دوستان گرامي لطفا به اين سوال هم توجه فرمائيد .
پيشاپيش سپاسگزارم .
من C# کار نیستم. ولی اینجوری که توی MSDN نوشته پارامتر های از نوع out توی تابع قبل از هر جور استفاده ای باید دوباره تعریف بشن.
کد:
x1=new int[]{2,4}
متغیر های از نوع ref هم میتونن میقدار نداشته باشن. توی تابع میتونید با یه if چک کنید که اگه null بود خدتون یه مقدار پیشفرض بدید.
(۳۰-خرداد-۱۳۸۸, ۱۸:۳۲:۳۴)ajlajlajl نوشته است: [ -> ]من C# کار نیستم. ولی اینجوری که توی MSDN نوشته پارامتر های از نوع out توی تابع قبل از هر جور استفاده ای باید دوباره تعریف بشن.
کد:
x1=new int[]{2,4}
متغیر های از نوع ref هم میتونن میقدار نداشته باشن. توی تابع میتونید با یه if چک کنید که اگه null بود خدتون یه مقدار پیشفرض بدید.

ممنون دوست گرامي :
اما من يه برنامه پيوست كردم . در آن برنامه چرا جاي Ref از Out استفاده مي كنم Error مي دهد ؟

راستي از اينكه لطف كردي و به سوال من پاسخ دادي واقعا ممنونم .
خب گفتم که. شما توی تابع باید اول آرایه رو دوباره تعریف کنید. بعد ازش استفاده کنید.
(۳۰-خرداد-۱۳۸۸, ۱۹:۱۴:۴۹)ajlajlajl نوشته است: [ -> ]خب گفتم که. شما توی تابع باید اول آرایه رو دوباره تعریف کنید. بعد ازش استفاده کنید.

ajlajlajl عزيزم از اينكه بلافاصله به سوالات من (چه در اين تاپيك چه در تاپيك هاي ديگر ) پاسخ مي دهي سپاسگزارم .
اما من آرايه رو دوباره از نو تعريف كردم اما بازم Error ميده . اگر وقت داشتي ، منت سر بنده گذاشتي، اگر برنامه رو يكبار باز كني و ببيني چرا نميشه و اگر درست كردي همين جا پيوست كني تا متوجه اشكالم بشم .
اگر هم كه براتون امكان پذير نبود ، شما لطفتون شامل حال من بوده بازم ازتون سپاسگزارم ، ايرادي نداره .
پيشاپيش سپاسگزارم .
من برنامه تونو دیدم. کدشو میگذارم احتمالا منظور منو نگرفتید.

تابع sum شما اگه پارامتر هاش out بشه باید اینجوری بنویسید تا کار کنه:
کد:
void sum (int[] sam , out int[] x1, out int[] y1 )
    {
        x1 = new int[] { 2, 9 };
        y1 = new int[] { 2, 9 };
        int j;
        for (j = 0; j < 2; j++)
            sam[j] = x1[j] + y1[j];
    }
اینجوری که من دیدم از پارامتر های out فقط برای خروجی دادن از تابع به کار میده و فایده ای دیگه نداره.
در تایید فرمایش شما باید بگم که اگر یک پارامتر out دارای یک مقدار در داخل بدنه تابع نباشد ، متد کامپایل نخواهد شد.که اینجا نیاز بود داخل متد sum ، مجدد x , y مقدار دهی شوند.
و این می تونه فرق ref با out در نحوه مقدار دهی باشد.