我在JetBrains Rider中工作,遇到了不断出现的警告。考虑这种情况:
public enum ValueEnum {
A,B,C
}
public class Value {
public ValueEnum ValueEnum { get; set; }
}
public class ValueWrapper {
public IEnumerable<Value> Values { get; set; }
}
我正在尝试获取列表中的第一个枚举并将其转换为字符串。这段代码可以正常工作:
var format = string.Empty;
if (alert.Values != null && alert.Values.Count > 0)
{
var template = alert.Values.First();
format = nameof(template.ValueEnum);
}
但是我得到的分配的值未在任何执行路径中使用警告。将上面的代码段转换为以下代码:
var format2 = string.Empty;
if (alert.Values != null)
{
foreach (var template in alert.Values)
{
format2 = nameof(template.ValueEnum);
break;
}
}
产生一个局部变量“ template”仅用于捕获其名称。
是否有一种更干净的方式(使用LINQ或诸如此类)来编写符合c#最佳实践的方法?
答案 0 :(得分:2)
假设您实际上需要枚举的字符串值,而不是文字字符串“ ValueEnum”,请尝试:
alert.Values?.FirstOrDefault()?.ValueEnum.ToString() ?? string.Empty;
(如果您将nameof(template.ValueEnum)
更改为template.ValueEnum.ToString()
,但您的两种方法都行得通,但不必要的冗长)。