C#中可空short类型简写赋值类型不匹配问题求解
解决方案
问题根源是三元运算符要求两个分支的返回类型必须可隐式兼容:short.Parse返回值是值类型short,而null属于null类型,两者无法自动统一类型,因此编译报错。以下是两种保留简写风格的解决方法:
显式统一分支类型
将short.Parse的结果强制转换为short?类型,让两个分支的类型统一为可空短整型:short? var = textbox.Text.Length > 0 ? (short?)short.Parse(textbox.Text) : null;更健壮的容错写法
直接使用short.Parse会在输入非数字文本时抛出异常,推荐结合TryParse实现更安全的简写,同时满足类型兼容要求:short? var = short.TryParse(textbox.Text, out short val) ? val : (short?)null;
内容的提问来源于stack exchange,提问作者Malte
相关产品推荐
相关产品推荐

