در حال بارگذاری...

پارامترها

یک متد به‌نام greet بنویسید که یک واژه به داخل بگیرد. داخل پرانتز string name بنویسید. در بدنه با Console.WriteLine("hi " + name); مقدار hi، یک فاصله، و بعد name را بنویسید. از Main فراخوانی کنید greet("lena");. صفحه باید یک خط نشان دهد: hi lena. حرف‌های lena داخل متد سخت‌کد نشده‌اند. از راه فراخوانی می‌رسند و برای آن گذر در نام name می‌نشینند. همین تحویل چیزی است که این صفحه آموزش می‌دهد. نام کلاس عمومی را Pine نگه دارید.

نامی داخل پرانتز

در صفحهٔ متدها پرانتز بعد از ring خالی ماند. خط نوشتن همیشه ding بود. اینجا پرانتز یک نام تایپ‌دار نگه می‌دارد تا هر فراخوانی بتواند مقدار متفاوت بفرستد. آن نام تایپ‌دار پارامتر است. مقداری که در فراخوانی می‌نویسید آرگومان همان گذر است.
فایل Pine را باز کنید. نام کلاس Pine می‌ماند. این صفحه نوع را عوض نام نمی‌کند. اگر هنوز فقط دموی ring(); با پرانتز خالی در Main است و برای شکل این صفحه آماده‌اید، پاکش کنید. هر باقی‌ماندهٔ foreach را پاک کنید. هر خط ReadLine را هم پاک کنید. فایلی که نگه می‌دارید منتظر تایپ نیست.
بیرون از Main، هنوز داخل آکولادهای کلاس، سرصفحه در این شکل مبتدی با static void شروع می‌شود. بین پرانتزها string و بعد name می‌نشینند — اول نوع، بعد نام پارامتر. C# نوع string را در این شکل با s کوچک می‌نویسد. بدنه name را بدون گیومه دور آن به کار می‌برد و با متن ثابت "hi " با علامت به‌علاوه جور می‌کند. گیومه دور "hi " حرف‌های ثابت را نشان می‌دهد. name لخت مقدار رسیده‌از فراخوانی را نشان می‌دهد. پیش از اجرا فایل را ذخیره کنید. برنامهٔ کامل اول در جعبهٔ بعدی است.

فایلی که نگه می‌دارید

این نسخه‌ای است که اول اجرا می‌کنید. Main فراخوانی را با مقدار داخل پرانتز نگه می‌دارد. greet خط نوشتنی را نگه می‌دارد که از آن مقدار استفاده می‌کند.

greet takes a string

csharp
using System;

public class Pine
{
    public static void Main()
    {
        greet("lena");
    }

    static void greet(string name)
    {
        Console.WriteLine("hi " + name);
    }
}

از بالا بخوانید. using System; نام‌های کوتاه را آماده می‌کند. public class Pine نوع را نام می‌گذارد. public static void Main() جایی است که زمان اجرا شروع می‌کند. فراخوانی greet("lena"); متن را به پارامتر می‌فرستد. static void greet(string name) مقدار Console.WriteLine("hi " + name); را نگه می‌دارد. روی صفحه یک خط: hi lena.

با dotnet run اجرا کنید. برنامه یک خط می‌نویسد و تمام می‌شود. منتظر نمی‌ماند که شما چیزی تایپ کنید. اگر dotnet run منتظر ماند، هنوز ReadLine داخل فایل است. آن خط را پاک کنید و greet("lena"); به‌همراه متد greet بالا را نگه دارید. صفحه hi lena را نشان می‌دهد. اگر صفحه فقط ding نشان دهد، هنوز فراخوانی قدیمی ring(); اجرا می‌شود. اگر صفحه حرف‌های name را نشان دهد، خط نوشتن دور همان کلمه گیومه دارد: Console.WriteLine("name");. برای صفحه‌ای که خط اشتباه نشان می‌دهد SDK دات‌نت را دوباره نصب نکنید.

یک اجرای کامل را به ترتیب راه بروید. C# از Main شروع می‌کند. فراخوانی greet("lena"); متن lena را داخل پارامتر name می‌فرستد. درون greet، WriteLine مقدار hi، یک فاصله، و بعد آن مقدار را می‌سازد، پس صفحه hi lena نشان می‌دهد. سپس greet تمام می‌شود و Main تمام می‌شود. داخل Main ننوشتید Console.WriteLine("hi lena");. بخش ثابت را یک‌بار زیر greet نوشتید و lena را از فراخوانی فرستادید.
پارامتر تا وقتی فراخوانی پرش کند خالی است. در فراخوانی اول، name برای همان گذر lena را نگه می‌دارد. در فراخوانی بعدی با "sam"، همان نام پارامتر مقدار دیگری نگه می‌دارد. برای واژهٔ دوم متد دومی نمی‌سازید؛ آرگومان تازه‌ای به همان سرصفحه می‌فرستید.

همان متد، واژه‌های متفاوت

فقط Main را عوض کنید تا greet را دو بار با دو آرگومان متفاوت صدا بزند. خود متد greet را دست نزنید.

greet with two arguments

csharp
using System;

public class Pine
{
    public static void Main()
    {
        greet("lena");
        greet("sam");
    }

    static void greet(string name)
    {
        Console.WriteLine("hi " + name);
    }
}

این فایل دوم است. همان متد را با دو فراخوانی آموزش می‌دهد. با dotnet run اجرا کنید. صفحه باید دو خط نشان دهد: hi lena، بعد hi sam. فراخوانی اول name را با lena پر می‌کند. فراخوانی دوم name را با sam پر می‌کند. WriteLine را زیر greet کپی نکردید. فقط مقدارهای داخل فراخوانی‌ها را عوض کردید.
اگر greet() را با پرانتز خالی صدا بزنید در حالی که سرصفحه هنوز string name دارد، ساخت خطا می‌نویسد — فراخوانی باید یک string بدهد. اگر هنوز ring(); قدیمی با پرانتز خالی از صفحهٔ متدها در همان Main باشد، آن فراخوانی با greet جور نیست و متد باقی‌ماندهٔ ring ممکن است هنوز کنار خط‌های hi مقدار ding بنویسد. Main را تا فراخوانی‌های greet که این درس لازم دارد پاک کنید. بعد از دیدن دو خط، اگر شکل ذخیره‌ای که می‌خواهید یک فراخوانی است، فایل نگه‌داشتنی یک‌فراخوانی را برگردانید: یک greet("lena"); در Main.

عدد صحیح به‌عنوان مقدار

پارامترها فقط برای متن نیستند. متد دومی بنویسید که یک int به‌نام n بگیرد و بنویسدش. از Main با عددهای صحیح مثل show(9); و show(4); صدا بزنید.

show takes an int

csharp
using System;

public class Pine
{
    public static void Main()
    {
        show(9);
        show(4);
    }

    static void show(int n)
    {
        Console.WriteLine(n);
    }
}

این فایل سوم است. فایل نگه‌داشتنی برای شکل greet نیست. با dotnet run اجرا کنید. صفحه باید دو خط نشان دهد: 9، بعد 4. دور 9 یا 4 در فراخوانی گیومه نیست — آن‌ها مقدار int هستند، نه متن. داخل show، Console.WriteLine(n) عددی را می‌نویسد که رسیده. بعد از دیدن آن دو خط، دموی greet را برگردانید. هر دو نسخه C# معتبرند. همان ایده را آموزش می‌دهند: فراخوانی مقدار می‌فرستد، پارامتر آن را برای بدنه نگه می‌دارد.
اجرای int را یک‌بار دیگر بخوانید. فراخوانی اول n را برابر 9 می‌گذارد و 9 می‌نویسد. فراخوانی دوم n را برابر 4 می‌گذارد و 4 می‌نویسد. نام n یک‌بار در سرصفحه به‌صورت int n اعلام می‌شود. هر فراخوانی برای آن گذر مقدار تازه‌ای می‌دهد. فرستادن واژهٔ گیومه‌دار به show، مثل show("nine");، با int در این شکل جور نیست — ساخت خطا می‌نویسد. فرستادن عدد لخت به greet، مثل greet(3);، با string جور نیست — ساخت دوباره خطا می‌نویسد. نوع آرگومان را با نوع پارامتر جور کنید.

اشتباه رایج نوشتن نام پارامتر به‌صورت متن است: Console.WriteLine("name");. آن خط حرف‌های n-a-m-e را می‌نویسد. lena را نمی‌نویسد. وقتی می‌خواهید حرف‌های آرگومان روی صفحه باشد، Console.WriteLine("hi " + name) را بدون گیومه دور name نگه دارید. اشتباه دیگر اعلام پارامتر در Main به‌جای سرصفحهٔ متد است. نام تایپ‌دار داخل greet(...) یا show(...) می‌نشیند، نه داخل پرانتز Main در این صفحه. () خالی صفحهٔ ring وقتی سرصفحه string name می‌خواهد کافی نیست.

void هنوز یعنی چیزی از راه فراخوانی برنمی‌گردد. می‌توانید string name یا int n را داخل پرانتز متد بگذارید، مقدار جور در فراخوانی بفرستید، و آن مقدار را از بدنه بنویسید. دو فراخوانی با دو آرگومان بدون کپی متد دو خط متفاوت می‌نویسند. صفحهٔ بعدی return است؛ آنجا متد مقداری به Main برمی‌گرداند به‌جای این که فقط داخل بدنه بنویسد.

صفحه آرگومان را نگه می‌دارد

فایلی که نگه می‌دارید وقتی Main صدا می‌زند greet("lena"); مقدار hi lena می‌نویسد. نام name در خط نوشتن بدون گیومه دور آن است. گیومه دور name حرف می‌نویسد، نه آرگومان. () خالی روی فراخوانی با سرصفحه‌ای که string name می‌خواهد جور نیست.

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
5
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود