C# 基于Switch语句获取值
是否可以基于C中的switch语句获取值C# 基于Switch语句获取值,c#,.net,wpf,C#,.net,Wpf,是否可以基于C中的switch语句获取值 public int NumCandyBars (string candyBar) { get { switch (candyBar) { case "twix": { return _numTwix; } case "snickers": return _numSnickers;
public int NumCandyBars (string candyBar)
{
get {
switch (candyBar)
{
case "twix":
{ return _numTwix; }
case "snickers":
return _numSnickers;
case "kitkat":
return _numKitKat;
default: return 0;
}
}
}
因此,上面的代码应该返回一个基于字符串类型的值
public enum CandyBar
{
twix,
snickers,
kitkat
}
public int NumCandyBars (CandyBar candyBar)
{
switch (candyBar)
{
case CandyBar.twix:
return _numTwix;
case CandyBar.snickers:
return _numSnickers;
case CandyBar.kitkat:
return _numKitKat;
default: return 0;
}
}
不一定需要多态性,但select需要一个Enum在此上下文中满足的常量值。在我看来,您最好避免切换,而使用字典
public int NumCandyBars (string candyBar)
{
int retval = 0;
switch (candyBar)
{
case "twix":
retval = _numTwix;
break;
case "snickers":
retval =_numSnickers;
break;
case "kitkat":
retval = _numKitKat;
break;
}
return retval;
}
像这样:
public int NumCandyBars (string candyBar)
{
var map = new Dictionary<string, int>()
{
{ "twix", _numTwix },
{ "snickers", _numSnickers },
{ "kitkat", _numKitKat },
};
return map.ContainsKey(candyBar) ? map[candyBar] : 0;
}
或者,您也可以从配置文件中加载数据,或从枚举或数据库中提取数据,并且您的numcandybar无需更改。您想要这样做的事实是使用多态性!NumCandyBars应该是一个方法还是属性?删除get关键字它应该是一个methodWell,然后删除get关键字
private Dictionary<string, int> map = new Dictionary<string, int>()
{
{ "twix", _numTwix },
{ "snickers", _numSnickers },
{ "kitkat", _numKitKat },
};
public int NumCandyBars (string candyBar)
{
return map.ContainsKey(candyBar) ? map[candyBar] : 0;
}
public void SomeMethod()
{
map["mars"] = 42;
}