C# Language
Namngivna och valfria argument
Sök…
Anmärkningar
Namngivna argument
Ref: MSDN Namngivna argument gör det möjligt för dig att ange ett argument för en viss parameter genom att associera argumentet med parameterns namn snarare än med parameterns placering i parameterlistan.
Som sagt av MSDN, Ett namngivet argument,
- Gör det möjligt att skicka argumentet till funktionen genom att koppla parameterns namn.
- Inga behov för att komma ihåg parametrarnas position som vi inte är medvetna om alltid.
- Du behöver inte leta efter parametrarnas ordning i parameterns lista över kallad funktion.
- Vi kan ange parameter för varje argument med dess namn.
Valfritt argument
Ref: MSDN Definitionen av en metod, konstruktör, indexerare eller delegat kan specificera att dess parametrar krävs eller att de är valfria. Alla samtal måste tillhandahålla argument för alla nödvändiga parametrar, men kan utelämna argument för valfria parametrar.
Som sagt av MSDN, ett valfritt argument,
- Vi kan utelämna argumentet i samtalet om detta argument är ett valfritt argument
- Varje valfritt argument har sitt eget standardvärde
- Det tar standardvärde om vi inte tillhandahåller värdet
- Ett standardvärde för ett valfritt argument måste vara ett
- Konstant uttryck.
- Måste vara en värdetyp som enum eller struktur.
- Måste vara ett uttryck för standardformuläret (valueType)
- Det måste ställas in i slutet av parameterlistan
Namngivna argument
Överväg att följa är vårt funktionssamtal.
FindArea(120, 56);
I detta är vårt första argument längd (dvs. 120) och andra argument är bredd (dvs. 56). Och vi beräknar området med den funktionen. Och följande är funktionsdefinitionen.
private static double FindArea(int length, int width)
{
try
{
return (length* width);
}
catch (Exception)
{
throw new NotImplementedException();
}
}
Så i det första funktionssamtalet skickade vi bara argumenten efter dess position. Rätt?
double area;
Console.WriteLine("Area with positioned argument is: ");
area = FindArea(120, 56);
Console.WriteLine(area);
Console.Read();
Om du kör detta får du en utgång enligt följande.
Nu kommer det funktionerna i ett namngivna argument. Se föregående funktionssamtal.
Console.WriteLine("Area with Named argument is: ");
area = FindArea(length: 120, width: 56);
Console.WriteLine(area);
Console.Read();
Här ger vi de nämnda argumenten i metodsamtalet.
area = FindArea(length: 120, width: 56);
Om du kör detta program får du samma resultat. Vi kan ge namnen vice versa i metodsamtalet om vi använder de nämnda argumenten.
Console.WriteLine("Area with Named argument vice versa is: ");
area = FindArea(width: 120, length: 56);
Console.WriteLine(area);
Console.Read();
En av de viktiga användningarna av ett namngivet argument är att när du använder detta i ditt program förbättrar det din läsbarhet för din kod. Den säger helt enkelt vad ditt argument är tänkt att vara, eller vad det är ?.
Du kan också ge positionella argument. Det betyder en kombination av både positionsargument och namngivna argument.
Console.WriteLine("Area with Named argument Positional Argument : ");
area = FindArea(120, width: 56);
Console.WriteLine(area);
Console.Read();
I exemplet ovan passerade vi 120 som längd och 56 som ett namngivet argument för parameterbredden.
Det finns vissa begränsningar också. Vi kommer nu att diskutera begränsningen av de namngivna argumenten.
Begränsning av att använda ett namngivet argument
Namngivna argumentspecifikationer måste visas efter att alla fasta argument har angetts.
Om du använder ett namngivet argument före ett fast argument får du ett sammanställningstidsfel enligt följande.
Namngivna argumentspecifikationer måste visas efter att alla fasta argument har angetts
Valfritt argument
Tänk på att föregående är vår funktionsdefinition med valfria argument.
private static double FindAreaWithOptional(int length, int width=56)
{
try
{
return (length * width);
}
catch (Exception)
{
throw new NotImplementedException();
}
}
Här har vi ställt in värdet för bredd som valfritt och gav värde som 56. Om du noterar, visar IntelliSense själv det valfria argumentet som visas i bilden nedan.
Console.WriteLine("Area with Optional Argument : ");
area = FindAreaWithOptional(120);
Console.WriteLine(area);
Console.Read();
Observera att vi inte fick något fel under sammanställningen och det ger dig en utgång enligt följande.
Använda valfritt attribut.
Ett annat sätt att implementera det frivilliga argumentet är att använda nyckelordet [Optional]
. Om du inte överför värdet för det valfria argumentet tilldelas standardvärdet för den datatypen till det argumentet. Det Optional
nyckelordet finns i namnområdet "Runtime.InteropServices".
using System.Runtime.InteropServices;
private static double FindAreaWithOptional(int length, [Optional]int width)
{
try
{
return (length * width);
}
catch (Exception)
{
throw new NotImplementedException();
}
}
area = FindAreaWithOptional(120); //area=0
Och när vi kallar funktionen får vi 0 eftersom det andra argumentet inte passeras och standardvärdet för int är 0 och därför är produkten 0.