如果没有值,我无法将“年份”设为当前年份的默认值。
var now = DateTime.Now;
Year = int.Parse(bindingContext.ValueProvider.GetValue("Year").AttemptedValue ?? now.Year);
如果没有值,我无法将“年份”设为当前年份的默认值。
var now = DateTime.Now;
Year = int.Parse(bindingContext.ValueProvider.GetValue("Year").AttemptedValue ?? now.Year);
您必须对两个相似的类型应用合并运算符。String 和 int 是不一样的。试试这个:
var year = 0;
if(!int.TryParse(bindingContext.ValueProvider.GetValue("Year").AttemptedValue, out year))
year = DateTime.Now.Year;
在示例中,仅当 AttemptedValue 可解析为整数时才会替换年份,否则将是当前年份。
看起来
bindingContext.ValueProvider.GetValue("Year").AttemptedValue
是string
类型的,??
运算符期望左/右值都属于同一类型。
作为一个案例,你可以做now.Year.ToString():
var now = DateTime.Now;
Year = int.Parse(
bindingContext.ValueProvider.GetValue("Year").AttemptedValue
?? now.Year.ToString());
使用.ToString()
:
Year = int.Parse(bindingContext.ValueProvider.GetValue("Year").AttemptedValue ?? now.Year.ToString());
两个变量必须是同一类型。
问题是您的一个值是一个字符串,一个是一个 int,因此它也无法决定要转换什么
您需要确保类型匹配并且这个问题应该消失。
我会使用 .ToString() 以便它们都是字符串。