make method parameters optional
1. Use parameter arrays
2. Method overloading
3. Specify parameter defaults
4. Use optionalAttribute that is present in System.Runtime.InteropServices namespace
==========================1.
using System;
class Program
{
static void Main()
{
AddNumbers(10, 20);
AddNumbers(10, 20, 30, 40, 50);
AddNumbers(10, 20, new object[]{30, 40, 50});
}
//third parameter is optional as of using params keyword
//params should be the last position
public static void AddNumbers(int fn, int sn, params object[] restOfNumbers)
{
int result = fn + sn;
if (restOfNumbers != null)
{
foreach(int i in restOfNumbers)
{
result += i;
}
Console.WriteLine("Sum = " + result);
}
}
}
==========================2.
using System;
class Program
{
static void Main()
{
AddNumbers(10, 20);
AddNumbers(10, 20, new int[]{10,20});
}
public static void AddNumbers(int fn, int sn)
{
AddNumbers(fn, sn, null);
}
public static void AddNumbers(int fn, int sn, int[] restOfNumbers)
{
int result = fn + sn;
if (restOfNumbers != null)
{
foreach(int i in restOfNumbers)
{
result += i;
}
Console.WriteLine("Sum = " + result);
}
}
}
=================================3.
using System;
class Program
{
static void Main()
{
AddNumbers(10, 20);
AddNumbers(10, 20, new int[] {40,50});
}
public static void AddNumbers(int fn, int sn, int[] restOfNumbers = null)
{
int result = fn + sn;
if (restOfNumbers != null)
{
foreach(int i in restOfNumbers)
{
result += i;
}
Console.WriteLine("Sum = " + result);
}
}
}
=======================Named Parameter
using System;
class Program
{
static void Main()
{
Test(1, c:2);
}
public static void Test(int a, int b =10, int c=20)
{
Console.WriteLine("a = " + a);
Console.WriteLine("b = " + b);
Console.WriteLine("c = " + c);
}
}
========================4.
using System;
using System.Runtime.InteropServices;
class Program
{
static void Main()
{
AddNumbers(10, 20);
AddNumbers(10, 20, new int[]{30,40});
}
public static void AddNumbers(int fn, int sn, [Optional] int[] restOfNumbers)
{
int result = fn + sn;
if (restOfNumbers != null)
{
foreach (int i in restOfNumbers)
{
result += i;
}
}
Console.WriteLine("Sum = " + result);
}
}