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 enum
zo 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