这里有基本问题,但我是c#的新手。我有代码基本上说:如果条件A,则在属性X上执行代码块。如果条件B,则在属性Y上执行相同的代码块,依此类推。只需要将一个属性名称--a.Value.ValueX更改为a.Value.ValueY - 而不必复制我的代码块,就可以将ValueX或ValueY作为变量调用,例如a.Value。{$ propertyName} ?
public static class Conditions
{
public static bool A { get; set; }
public static bool B { get; set; }
}
public class MyObjects
{
public int ValueX { get; set; }
public int ValueY { get; set; }
}
public class MyCollection
{
public Dictionary<int, MyObjects> listOfObjects = new Dictionary<int, MyObjects>();
public static void DoConditions()
{
foreach( var a in listOfObjects)
{
if(Conditions.A)
{
// do code using value x
if (a.Value.ValueX > 0)
continue;
}
else if(Conditions.B)
{
// do the exact same code using value Y
if (a.Value.ValueY > 0)
continue;
}
}
}
}
答案 0 :(得分:1)
你可以这样做:
int val = 0;
if(Conditions.A)
val = a.Value.ValueX;
else if(Conditions.B)
val = a.Value.ValueY;
// Your code block here using "val".
答案 1 :(得分:1)
创建一个变量并使用适当的属性值填充它:
foreach( var a in listOfObjects)
{
int value;
if(Conditions.A)
value = a.Value.ValueX;
else
value = a.Value.ValueY;
if(value > 0)
continue;
//other code using `value`
}