接线员'??' 不能应用于'string'和'int'类型的操作数

Mit*_*all 2 c#

如果没有价值,我无法将'Year'作为当前Year的默认值.

var now = DateTime.Now;
Year = int.Parse(bindingContext.ValueProvider.GetValue("Year").AttemptedValue ?? now.Year);
Run Code Online (Sandbox Code Playgroud)

vig*_*ity 7

您必须在两个类似的类型上应用coalesce运算符.String和int不一样.试试这个:

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

在示例中,只有在AttemptedValue可解析为整数时才会替换year,否则它将是当前年份.