ارسال پارامتر به عنوان خروجی در سی شارپ
در حالت عادی یک تابع فقط می تواند یک مقدار را باز گرداند، اما با استفاده از پارامترهای output می توان بیش از یک مقدار را باز گرداند. پارامترهای output شبیه پارامترهای ارجاعی هستند، با این تفاوت که آن ها داده ها را به جای آن که به داخل تابع منتقل کنند به خارج از آن ارسال می کنند.
مثال زیر این موضوع را نشان می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | using System; namespace CalculatorApplication { class NumberManipulator { public void getValue(out int x ) { int temp = 5; x = temp; } static void Main(string[] args) { NumberManipulator n = new NumberManipulator(); /* local variable definition */ int a = 100; Console.WriteLine("Before method call, value of a : {0}", a); /* calling a function to get the value */ n.getValue(out a); Console.WriteLine("After method call, value of a : {0}", a); Console.ReadLine(); } } } |
زمانی که کد بالا توسط کامپایلر زبان سی شارپ اجرا شود، نتیجه زیرا را تولید خواهد کرد:
1 2 | Before method call, value of a : 100 After method call, value of a : 5 |
همان طور که در کد بالا مشاهده می کنید، برای تعریف این نوع از پارامترها باید از کلمه کلیدی out استفاده کنید. این نوع از پارامترها زمانی بدرد می خورند که بخواهیم بدون تخصیص یک مقدار اولیه به پارامتر، آن را از تابع به عنوان خروجی دریافت کنیم. برای درک بهتر به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | using System; namespace CalculatorApplication { class NumberManipulator { public void getValues(out int x, out int y ) { Console.WriteLine("Enter the first value: "); x = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter the second value: "); y = Convert.ToInt32(Console.ReadLine()); } static void Main(string[] args) { NumberManipulator n = new NumberManipulator(); /* local variable definition */ int a , b; /* calling a function to get the values */ n.getValues(out a, out b); Console.WriteLine("After method call, value of a : {0}", a); Console.WriteLine("After method call, value of b : {0}", b); Console.ReadLine(); } } } |
زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 2 3 4 5 6 | Enter the first value: 7 Enter the second value: 8 After method call, value of a : 7 After method call, value of b : 8 |
هیچ نظری ثبت نشده است