PDA

View Full Version : متدی با پارامتر های نامحدود



gigil_Question
شنبه 18 مهر 1388, 16:12 عصر
سلام
چه طور میشه یه متدی نوشت که تعداد نامحدودی پارامتر بگیره ؟
مثل :


Console.WriteLine("{1} {2} {3} {4} {5} {6} {7} {8} {9} {10}",1,2,3,4,5,6,7,8,9,10)

smk311
شنبه 18 مهر 1388, 17:21 عصر
برای این کار می توانی از params در تعریف پارامترهای متد استفاده کنی




// cs_params.cs
using System;
public class MyClass
{

public static void UseParams(params int[] list)
{
for ( int i = 0 ; i < list.Length ; i++ )
Console.WriteLine(list[i]);
Console.WriteLine();
}

public static void UseParams2(params object[] list)
{
for ( int i = 0 ; i < list.Length ; i++ )
Console.WriteLine(list[i]);
Console.WriteLine();
}

public static void Main()
{
UseParams(1, 2, 3);
UseParams2(1, 'a', "test");

int[] myarray = new int[3] {10,11,12};
UseParams(myarray);
}
}



و خروجی اوون به شکل زیر خواهد بود


1
2
3

1
a
test

10
11
12

alireza_s_84
شنبه 18 مهر 1388, 17:21 عصر
سلام
چه طور میشه یه متدی نوشت که تعداد نامحدودی پارامتر بگیره ؟
مثل :


Console.WriteLine("{1} {2} {3} {4} {5} {6} {7} {8} {9} {10}",1,2,3,4,5,6,7,8,9,10)

سلام:
قبل از نوع پارامتر از کلمه کلیدی params استفاده کنید. به این ترتیب میتونید هر تعداد دلتون بخواد پارامتر به متد بفرستین.
مثال:


public void WriteNumber(params Int32[] numbers)
{
for (Int32 i = 0; i < numbers.Length; i++)
{
Response.Write(numbers[i].ToString() + "<br />");
}
}

برای داشتن پارامترهایی با انواع مختلف باید نوع پارامترتون object باشه و بعد جهت استفاده Cast کنید
موفق باشید