[英]C# 8 Switch Expression
我可以用 C#8 switch expression
替換此代碼片段嗎?
請注意,如果 ObjectType 是 Computer,ObjectClass 將包含“person”,因此排序很重要。
此外,這個問題是學術性的,我只對switch expression
感興趣,而不是如何解決這個特定問題。
public List<string> ObjectClass { get; set; }
public ObjectType ObjectType {
get {
if (ObjectClass.Contains("group")) { return ObjectType.Group; }
if (ObjectClass.Contains("computer")) { return ObjectType.Computer; }
if (ObjectClass.Contains("person")) { return ObjectType.User; }
return ObjectType.Unknown;
}
}
這個答案建立在@IliarTurdushev 提供的解決方案的基礎上,應該歸功於他。 還使用@NetMage 的建議進行了重構,謝謝。
public class Program
{
public List<string> ObjectClass { get; set; }
public ObjectType sample
{
get => ObjectClass switch {
_ when ObjectClass.Contains("group") => ObjectType.Group,
_ when ObjectClass.Contains("computer") => ObjectType.Computer,
_ when ObjectClass.Contains("person") => ObjectType.Person,
_ => ObjectType.Unknown};
}
public enum ObjectType
{
Group = 1,
Computer = 2,
Person = 3,
Unknown = 4
}
}
您可以結合 LINQ 和switch
來獲得(半)高效版本:
public ObjectType type
{
get => ObjectClass.Select(c => c switch { "group" => ObjectType.Group, "computer" => ObjectType.Computer, "person" => ObjectType.Person, _ => (ObjectType?)null})
.FirstOrDefault(t => t != null) ?? ObjectType.Unknown;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.