ایجاد متدی با پارامترهای متغییر و متعدد
به عنوان مثال دنبال ساخت متدی هستم که کارش Insert کردن در دیتابیس هست در حالی که این عمل بر روی چندین Table با فیلدهای مختلف انجام می شه.
و در هر عمل Insert ممکن است که روی یک table با 3 فیلد انجام بشه. ویا روی یک table با n فیلد انجام بشه که من فیلدها رو باید به عنوان آرگومان به تابع پاس کنم.
نقل قول: ایجاد متدی با پارامترهای متغییر و متعدد
در مورد ساخت متد که تعداد آرگومان های متفائتی بتواند اختیار کند از کلمه کلیدی params استفاده کنید.
تعریف MSDN از Params
نقل قول:
The params keyword lets you specify a method parameter that takes an argument where the number of arguments is variable.
مثال از MSDN
// 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();
}
static void Main()
{
UseParams(1, 2, 3);
UseParams2(1, 'a', "test");
// An array of objects can also be passed, as long as
// the array type matches the method being called.
int[] myarray = new int[3] {10,11,12};
UseParams(myarray);
}
}
1
2
3
1
a
test
10
11
12
اما در مورد نمونه مثالی که زدید، می توانید به کلاس SqlHelper مراجعه کنید. (در مورد این کلمه در google جستجو کنید)
نقل قول: ایجاد متدی با پارامترهای متغییر و متعدد
این تیکه مقاله رو نمیدونم از کجا پیدا کردم ولی اینجا میذارم شاید بدردت بخوره!
گاهي از اوقات نياز است تا تابعي تعريف كنيم كه تعداد آرگومانهاي آن متغير باشند .براي اين منظور از كلمه ي كليدي params استفاده مي شود.
دونكته در اينجا حائز اهميت است:
1- در هر تابعي تنها مي توان يكبار از params استفاده كرد.
2- پس از بكار بردن params ديگر نمي توان هيچ آرگوماني را تعريف كرد.
يكي از مثالهايي كه در اين زمينه مي توان ارائه داد استفاده از آرايه ها به عنوان آرگومان ورودي است. در اين حالت يا مي توان يك آرايه را به صورت كامل به تابع معرفي كرد و يا تنها نام آنرا به تابع پاس كرد. مثال زير را ملاحظه كنيد :
using System;
namespace ex17
{
class Class1
{
public static void UseParams(params int[] list)
{
for ( int i = 0 ; i < list.Length ; i++ )
Console.WriteLine(list[i]);
Console.WriteLine();
}
[STAThread]
static void Main(string[] args)
{
UseParams(1, 2, 3);
int[] myarray = new int[3] {10,11,12};
UseParams(myarray);
Console.ReadLine();
}
}
}
توضيحي در مورد كد فوق :
1- در تابع main به دو صورت از تابع UseParams ما استفاده شده است. يا اينكه خيلي ساده هر تعداد آرگومان را مي توان به تابع فرستاد و يا اينكه در ادامه آرايه ايي رسما تعريف و سپس به تابع فرستاده شود.
نقل قول: ایجاد متدی با پارامترهای متغییر و متعدد
میتونی از OverLoading یا چند ریختی (از مباحث مهم شی گرایی) استفاده کنی. یعنی یه متد با یه نام و یه مقدار برگشتی رو چندین بار با پارامترهای مختلف و البته در صورت نیاز با کارهای مختلف تعریف کنی.