2

如果没有值,我无法将“年份”设为当前年份的默认值。

var now = DateTime.Now;
Year = int.Parse(bindingContext.ValueProvider.GetValue("Year").AttemptedValue ?? now.Year);
4

4 回答 4

7

您必须对两个相似的类型应用合并运算符。String 和 int 是不一样的。试试这个:

var year = 0;
if(!int.TryParse(bindingContext.ValueProvider.GetValue("Year").AttemptedValue, out year))
    year = DateTime.Now.Year;

在示例中,仅当 AttemptedValue 可解析为整数时才会替换年份,否则将是当前年份。

于 2013-01-30T15:43:59.170 回答
2

看起来

bindingContext.ValueProvider.GetValue("Year").AttemptedValue

string类型的,??运算符期望左/右值都属于同一类型。

作为一个案例,你可以做now.Year.ToString()

var now = DateTime.Now;
Year = int.Parse(
             bindingContext.ValueProvider.GetValue("Year").AttemptedValue 
             ?? now.Year.ToString()); 
于 2013-01-30T15:43:25.253 回答
2

使用.ToString()

Year = int.Parse(bindingContext.ValueProvider.GetValue("Year").AttemptedValue ?? now.Year.ToString());

两个变量必须是同一类型。

于 2013-01-30T15:43:41.230 回答
0

问题是您的一个值是一个字符串,一个是一个 int,因此它也无法决定要转换什么

您需要确保类型匹配并且这个问题应该消失。

我会使用 .ToString() 以便它们都是字符串。

于 2013-01-30T15:46:19.620 回答