Jak tworzyć parametry opcjonalne w C#

Jak tworzyć parametry opcjonalne w C#

Jak ustawić Opcjonalne Parametry w C# z przykładami

W tym artykule omówię Jak tworzyć parametry opcjonalne w C# z przykładami. Przeczytaj nasz poprzedni artykuł, w którym omawialiśmy Automappery w C# . To również jedno z najczęściej zadawanych pytań podczas rozmowy kwalifikacyjnej. Więc tutaj omówimy różne opcje, które są dostępne w C#, aby parametry metody były opcjonalne.

Jak tworzyć parametry opcjonalne w C#?

Możemy uczynić parametry metody opcjonalnymi w C# na wiele różnych sposobów w następujący sposób.

  1. Korzystanie z tablicy parametrów
  2. Przeciążanie metody
  3. Określ wartości domyślne parametrów
  4. Korzystanie z OptionalAttribute

Omówmy więc kolejno wszystkie te opcje z przykładami.

Używanie tablicy parametrów do tworzenia parametru opcjonalnego w C#:

Pozwól nam zrozumieć, jak uczynić parametry metody opcjonalnymi przy użyciu tablicy parametrów w C# na przykładzie. Rozważ następującą metodę ADDNumbers. Tutaj deklarujemy pierwszy i drugi parametr jako liczby całkowite, a trzeci parametr to tablica parametrów, czyli obiekt params[].

Powyższa metoda ADDNumbers pozwala użytkownikowi dodać 2 lub więcej liczb. Parametry FN i SN są parametrami obowiązkowymi, natomiast parametr restOfTheNumbers jest opcjonalny. Jeśli użytkownik chce dodać tylko dwie liczby, może wywołać metodę pokazaną poniżej
ADDNumbers(10, 20);
Z drugiej strony, jeśli użytkownik chce dodać 5 liczb, może wywołać metodę na dwa poniższe sposoby.
ADDNumbers(10, 20, 30, 40, 50);
lub
ADDNumbers(10, 20, new object[]{30, 40, 50});

Tablica parametrów musi być ostatnim parametrem na formalnej liście parametrów. Poniższa funkcja nie zostanie skompilowana jako tablica parametrów, a nie ostatni parametr listy parametrów.

Pełny przykład znajduje się poniżej.
using System;
namespace OptionalParameter
{
    class Program
    {
        static void Main(string[] args)
        {
            ADDNumbers(10, 20);
            ADDNumbers(10, 20, 30, 40);
            ADDNumbers(10, 20, new object[] { 30, 40, 50 });
            Console.ReadLine();
        }

        public static void ADDNumbers(int FN, int SN, params object[] restOfTheNumbers)
        {
            int result = FN + SN;
            foreach (int i in restOfTheNumbers)
            {
                result += i;
            }
            Console.WriteLine("Total = " + result.ToString());
        }
    }
}
Wyjście:

Korzystanie z przeciążania metody w celu utworzenia parametru opcjonalnego w C#:

Pozwól nam zrozumieć, jak uczynić parametry metod opcjonalnymi przy użyciu przeciążania metod w C#. Stwórzmy następującą metodę, która doda dowolną liczbę liczb całkowitych. Tutaj utworzyliśmy dwa pierwsze parametry jako liczby całkowite, a trzeci parametr jako tablicę liczb całkowitych. Pierwsze dwa parametry są obowiązkowe, a w przypadku trzeciego parametru, jeśli nie chcesz przekazywać żadnej wartości, wystarczy podać null.

Jeśli chcesz dodać 5 liczb całkowitych, powiedzmy 10, 20, 30, 40 i 50, musisz wywołać metodę, jak pokazano poniżej.
ADDNumbers(10, 20, new int[]{30, 40, 50});
W tej chwili wszystkie 3 parametry metody są obowiązkowe. Teraz, jeśli chcę dodać tylko 2 liczby, mogę wywołać metodę, jak pokazano poniżej.
ADDNumbers(10, 20, null);
Zauważ, że tutaj przekazuję null jako argument dla trzeciego parametru. Możemy uczynić trzeci parametr opcjonalnym, przeciążając funkcję ADDNumbers(), która przyjmuje dwa parametry, jak pokazano poniżej.

Teraz mamy 2 przeciążone wersje funkcji ADDNumbers(). Jeśli chcemy dodać tylko 2 liczby, możemy użyć przeciążonej wersji funkcji ADDNumbers(), która przyjmuje 2 parametry, jak pokazano poniżej.
ADDNumbers(10, 20);
Podobnie, jeśli chcemy dodać 3 lub więcej liczb, możemy użyć przeciążonej wersji funkcji ADDNumbers(), która przyjmuje 3 parametry, jak pokazano poniżej.
ADDNumbers(10, 20, nowy int[] { 30, 40 });

Pełny przykład znajduje się poniżej
using System;
namespace OptionalParameter
{
    class Program
    {
        static void Main(string[] args)
        {
            ADDNumbers(10, 20);        
            ADDNumbers(10, 20, new int[] { 30, 40, 50 });
            
            Console.ReadLine();
        }

        public static void ADDNumbers(int FN, int SN, int[] restOfTheNumbers)
        {
            int result = FN + SN;
            foreach (int i in restOfTheNumbers)
            {
                result += i;
            }
            Console.WriteLine("Total = " + result.ToString());
        }

        public static void ADDNumbers(int FN, int SN)
        {
            int result = FN + SN;
            Console.WriteLine("Total = " + result.ToString());
        }
    }
}
Wyjście:

Opcjonalne parametry metody poprzez określenie wartości domyślnych parametrów w C#

Poznajmy, jak określić wartości domyślne parametrów, aby parametry metody make były opcjonalne w C#. Możemy uczynić parametr metody opcjonalnym, określając domyślną wartość null, jak pokazano poniżej. Jak widać na poniższym obrazku, uczyniliśmy trzeci parametr opcjonalnym, określając domyślną wartość null. Tutaj pierwszy i drugi parametr są parametrami obowiązkowymi.

Ponieważ określiliśmy domyślną wartość trzeciego parametru, teraz staje się ona opcjonalna. Tak więc, jeśli chcemy dodać tylko 2 liczby, możemy wywołać metodę, jak pokazano poniżej.
ADDNumbers(10, 20);
Z drugiej strony, jeśli chcemy dodać 3 lub więcej liczb, możemy wywołać metodę ADDNumbers(), jak pokazano poniżej.
ADDNumbers(10, 20, new int[] { 30, 40});
Parametry opcjonalne w C# muszą pojawić się po wszystkich wymaganych parametrach. Poniższa metoda nie zostanie skompilowana. Dzieje się tak dlatego, że parametr „restOfTheNumbers” jest opcjonalny, ale pojawia się on przed wymaganymi parametrami „SN”.

Parametry nazwane w C#:

W poniższej metodzie parametry „b” i „c” są opcjonalne.

Kiedy wywołujemy powyższą metodę, jak pokazano poniżej, „1” jest przekazywane jako argument dla parametru „a”, a „2” jest przekazywane jako argument dla parametru „b” przez domyślnie.
Test(1, 2);

Moim zamiarem jest przekazanie „2” jako argumentu dla parametru „c”. Aby to osiągnąć, możemy skorzystać z nazwanych parametrów, jak pokazano poniżej. Zauważ, że określiłem nazwę parametru, dla którego jest przekazywana wartość „2”.
Test(1, c:2);

Pełny przykład znajduje się poniżej.
using System;
namespace OptionalParameter
{
    class Program
    {
        static void Main(string[] args)
        {
            ADDNumbers(10, 20);        
            ADDNumbers(10, 20, new int[] { 30, 40, 50 });
            Test(1, 2);
            Test(1, c:2);
            Console.ReadLine();
        }

        public static void ADDNumbers(int FN, int SN,  int[] restOfTheNumbers = null)
        {
            int result = FN + SN;
            // loop thru restOfTheNumbers only if it is not null otherwise 
            // you will get a null reference exception
            if (restOfTheNumbers != null)
            {
                foreach (int i in restOfTheNumbers)
                {
                    result += i;
                }
            }
            Console.WriteLine("Total = " + result.ToString());
        }

        public static void Test(int a, int b = 10, int c = 20)
        {
            Console.WriteLine("a = " + a);
            Console.WriteLine("b = " + b);
            Console.WriteLine("c = " + c);
        }
    }
}
Wyjście:

Jak uczynić parametr opcjonalnym przy użyciu OptionalAttribute w C#

Pozwól nam zrozumieć, jak uczynić parametry metody opcjonalnymi, używając elementu OptionalAttribute w C#, który jest obecny w System.Runtime.InteropServices przestrzeń nazw. Proszę spojrzeć na następującą funkcję. Tutaj dekorujemy trzeci parametr atrybutem opcjonalnym, który czyni ten parametr opcjonalnym.

Tutaj zmieniamy restOfTheNumbers na opcjonalną, używając atrybutu [Optional]. Teraz, jeśli chcemy dodać tylko 2 liczby, możemy wywołać metodę ADDNumbers, jak pokazano poniżej.
ADDNumbers(10, 20);
Z drugiej strony, jeśli chcesz dodać 3 lub więcej liczb, możesz wywołać metodę ADDNumbers(), jak pokazano poniżej.
ADDNumbers(10, 20, new int[] { 30, 40});

Pełny przykład znajduje się poniżej.
using System;
using System.Runtime.InteropServices;

namespace OptionalParameter
{
    class Program
    {
        static void Main(string[] args)
        {
            ADDNumbers(10, 20);        
            ADDNumbers(10, 20, new int[] { 30, 40, 50 });
           
            Console.ReadLine();
        }

        public static void ADDNumbers(int FN, int SN, [Optional] int[] restOfTheNumbers)
        {
            int result = FN + SN;
            // loop thru restOfTheNumbers only if it is not null otherwise 
            // you will get a null reference exception
            if (restOfTheNumbers != null)
            {
                foreach (int i in restOfTheNumbers)
                {
                    result += i;
                }
            }
            Console.WriteLine("Total = " + result.ToString());
        }
    }
}
Wyjście:

W następnym artykule omówię jak tworzyć i używać indeksatorów w C# . W tym artykule staram się wyjaśnić jak tworzyć parametry opcjonalne w C# z przykładami. Mam nadzieję, że spodoba ci się ten parametr opcjonalny w C# z artykułami Przykłady.