Inline IF-statement in C#

Hoe schrijf ik een Inline IF-statement in mijn C# Service-klasse bij het instellen van mijn enum-waarde op basis van wat de database heeft geretourneerd?

Bijvoorbeeld: als de geretourneerde databasewaarde 1 is, stel dan de enum-waarde in op VariablePeriods, wanneer 2 dan FixedPeriods.

Ik hoop dat je kunt helpen.


Antwoord 1, autoriteit 100%

Het letterlijke antwoord is:

return (value == 1 ? Periods.VariablePeriods : Periods.FixedPeriods);

Merk op dat de inline if-instructie, net als een if-instructie, alleen controleert op waar of onwaar. Als (waarde == 1) evalueert naar onwaar, betekent dit niet noodzakelijkerwijs dat waarde == 2. Daarom zou het veiliger zijn als volgt:

return (value == 1
    ? Periods.VariablePeriods
    : (value == 2
        ? Periods.FixedPeriods
        : Periods.Unknown));

Als u meer waarden toevoegt, wordt een inline if onleesbaar en heeft een schakelaar de voorkeur:

switch (value)
{
case 1:
    return Periods.VariablePeriods;
case 2:
    return Periods.FixedPeriods;
}

Het goede aan enums is dat ze een waarde hebben, dus je kunt de waarden gebruiken voor de mapping, zoals user854301 suggereerde. Op deze manier kunt u onnodige vertakkingen voorkomen, waardoor de code leesbaarder en uitbreidbaarder wordt.


Antwoord 2, autoriteit 14%

U kunt uw enumzo definiëren en waar nodig castgebruiken

public enum MyEnum
{
    VariablePeriods = 1,
    FixedPeriods = 2
}

Gebruik

public class Entity
{
    public MyEnum Property { get; set; }
}
var returnedFromDB = 1;
var entity = new Entity();
entity.Property = (MyEnum)returnedFromDB;

Antwoord 3, Autoriteit 8%

U kunt inline IFS doen met

return y == 20 ? 1 : 2;

die u 1 geeft als TRUE en 2 indien false.


Antwoord 4

Dit is wat u nodig hebt: Ternary-operator, kijk hier alsjeblieft

http://msdn.microsoft. COM / EN-VS / BIBLIOTHEEK / TY67WK28% 28V = Vs.80% 29.aspx

http://www.dotnetperls.com/nary


Antwoord 5

ENUM MET INT: (int)Enum.FixedPeriods

INT TO ENUM: (Enum)myInt

Other episodes