其实这段就是对 RedirectUrl 的 Getter 的改写。
无论是 Location 还是 location,其实只有一个字母的区别,用两个 If 去判断会让代码不美观。
这段表达式能够获得 location 和 Location 这两个键的值。当然,用两个 If 能做到优先获得 location,未果后才去拿 Location 的值。
SafeString 安全返回 System.String,(如果 header 内既没有 Location 也没有 location,则返回 null)。
如果不要 null,一定要 String.Empty 的话,可以这样写
[C#] 纯文本查看 复制代码
return Header == null || Header.Count <= 0
? string.Empty
: Header.AllKeys.AsEnumerable().Any(key => key.ToLower() == "location")
? Header.AllKeys.AsEnumerable().FirstOrDefault(key => key.ToLower() == "location").SafeString()
: string.Empty;
当然,这也没有什么讲究的,还是看个人喜好。比如我更偏向用表达式来处理,会选用上面这段代码。站长更偏向于采用效率高一些的 If(在这里 If 的效率比表达式略高一些)来处理,也有人会用三元表达式来弄,比如:
[C#] 纯文本查看 复制代码
return Header == null || Header.Count <= 0
? string.Empty
: Header.AllKeys.Contains("location")
? Header["location"].SafeString()
: Header.AllKeys.Contains("Location")
? Header["Location"].SafeString()
: string.Empty;
|