如果没有价值,我无法将'Year'作为当前Year的默认值。
var now = DateTime.Now;
Year = int.Parse(bindingContext.ValueProvider.GetValue("Year").AttemptedValue ?? now.Year);
答案 0 :(得分:7)
您必须在两个类似的类型上应用coalesce运算符。 String和int不一样。试试这个:
var year = 0;
if(!int.TryParse(bindingContext.ValueProvider.GetValue("Year").AttemptedValue, out year))
year = DateTime.Now.Year;
在示例中,只有在AttemptedValue可解析为整数时才会替换year,否则它将是当前年份。
答案 1 :(得分:2)
似乎
bindingContext.ValueProvider.GetValue("Year").AttemptedValue
属于string
类型,??
运营商期望左/右值都属于同一类型。
作为案例,你现在可以做 .Year.ToString():
var now = DateTime.Now;
Year = int.Parse(
bindingContext.ValueProvider.GetValue("Year").AttemptedValue
?? now.Year.ToString());
答案 2 :(得分:2)
使用.ToString()
:
Year = int.Parse(bindingContext.ValueProvider.GetValue("Year").AttemptedValue ?? now.Year.ToString());
两个变量都必须属于同一类型。
答案 3 :(得分:0)
问题是你的一个值是一个字符串,一个是int,因此它无法决定转换的内容
您需要确保类型匹配,此问题应该消失。
我会使用.ToString()这样它们都是字符串。