C#只读属性如何实现两种返回结果的分支逻辑?
问题解答
结论
完全可以在C#只读属性的get访问器中实现多分支返回逻辑,你只需要补充构造函数的标识符列表初始化逻辑,同时补全三元运算符的边界判断条件即可。
完整实现代码
using System; using System.Collections.Generic; // 若使用LINQ简化写法需要额外引入该命名空间 // using System.Linq; public class IdentifiableObject { private List<string> _identifiers; public IdentifiableObject(string[] idents) { // 初始化标识符列表,同时处理入参为null的边界情况 _identifiers = idents != null ? new List<string>(idents) : new List<string>(); } public string FirstID { get { // 写法1:原生三元运算符实现,无需额外引用命名空间 return _identifiers.Count > 0 ? _identifiers[0] : String.Empty; // 写法2:LINQ简化写法,需要先引用System.Linq // return _identifiers.FirstOrDefault() ?? String.Empty; } } }
逻辑说明
- 构造函数中先对入参做非空处理,避免后续访问
_identifiers时出现空引用异常 - get访问器中先判断
_identifiers是否存在元素,存在则返回第一个元素,否则返回空字符串,避免触发索引越界异常
内容的提问来源于stack exchange,提问作者Karim Aly
相关产品推荐
相关产品推荐

