590 Stimmen

Wie können Sie optionale Parameter in C# verwenden?

Nota: Diese Frage wurde zu einer Zeit gestellt, als C# noch keine optionalen Parameter unterstützte (d.h. vor C# 4).

Wir erstellen eine Web-API, die programmatisch aus einer C#-Klasse generiert wird. Die Klasse hat die Methode GetFooBar(int a, int b) und die API hat eine Methode GetFooBar mit Abfrageparametern wie &a=foo &b=bar .

Die Klassen müssen optionale Parameter unterstützen, was in der Sprache C# nicht unterstützt wird. Was ist der beste Ansatz?

0voto

Sharunas Bielskis Punkte 955

Wenn keine Standardwerte verfügbar sind, kann ein optionaler Parameter mit der .NET-Klasse OptionalAttribute hinzugefügt werden. https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.optionalattribute?view=netframework-4.8

Nachstehend ein Beispiel für den Code:

namespace OptionalParameterWithOptionalAttribute
{
    class Program
    {
        static void Main(string[] args)
        {
            //Calling the helper method Hello only with required parameters
            Hello("Vardenis", "Pavardenis");
            //Calling the helper method Hello with required and optional parameters
            Hello("Vardenis", "Pavardenis", "Palanga");
        }
        public static void Hello(string firstName, string secondName, 
            [System.Runtime.InteropServices.OptionalAttribute] string  fromCity)
        {
            string result = firstName + " " + secondName;
            if (fromCity != null)
            {
                result += " from " + fromCity;
            }
            Console.WriteLine("Hello " + result);
        }

    }
}

0voto

Robert Paulson Punkte 16995

Anstelle von Standardparametern, warum nicht einfach ein Wörterbuch Klasse aus dem Querystring übergeben konstruieren .. eine Implementierung, die fast identisch mit der Art und Weise asp.net Formen mit Querystrings arbeiten ist.

d.h. Request.QueryString["a"]

Dadurch wird die Blattklasse von der Fabrik / dem Boilerplate-Code entkoppelt.


Weitere Informationen finden Sie unter Webdienste mit ASP.NET . Webdienste sind eine Web-API, die automatisch über Attribute von C#-Klassen erzeugt wird.

-4voto

Ankit Panwar Punkte 1

Das können Sie auch versuchen
Typ 1
public void YourMethod(int a=0, int b = 0) { //some code }

Typ 2
public void YourMethod(int? a, int? b) { //some code }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X