C# 是否有办法实施针对VS2015变更的类似募捐财产?
似乎我在VS2015中有以下代码的语法错误。 错误听起来像: 类型为“?”的值不能用作默认参数,因为 没有到类型“T”的标准转换 是否有办法在VS2015中实施类似的“募捐财产变更”C# 是否有办法实施针对VS2015变更的类似募捐财产?,c#,mvvm,C#,Mvvm,似乎我在VS2015中有以下代码的语法错误。 错误听起来像: 类型为“?”的值不能用作默认参数,因为 没有到类型“T”的标准转换 是否有办法在VS2015中实施类似的“募捐财产变更” public class ViewModel : ViewModelBase { // Property public const string SelectedItemPropertyName = "SelectedItem";
public class ViewModel : ViewModelBase
{
// Property
public const string SelectedItemPropertyName = "SelectedItem";
private int? _selectedItem;
public int? SelectedItem
{
get
{
return _selectedItem;
}
set
{
Set(SelectedItemPropertyName, ref _selectedItem, value);
}
}
// Method
private void Load()
{
int number = SelectedItem ?? -1;
// do your work
}
// Raise property changed
public override void RaisePropertyChanged<T>([CallerMemberName] string propertyName = null, T oldValue = default, T newValue = default, bool broadcast = false)
{
base.RaisePropertyChanged(propertyName, oldValue, newValue, broadcast);
if (propertyName == nameof(SelectedItem))
Load();
}
}
public类ViewModel:ViewModelBase
{
//财产
公共常量字符串SelectedItemPropertyName=“SelectedItem”;
私人int?\u选择编辑项;
public int?SelectedItem
{
得到
{
返回_selectedItem;
}
设置
{
Set(SelectedItemPropertyName,ref _selectedItem,value);
}
}
//方法
专用空心荷载()
{
整数=SelectedItem???-1;
//做你的工作
}
//提升属性已更改
public override void RaisePropertyChanged([CallerMemberName]string propertyName=null,T oldValue=default,T newValue=default,bool broadcast=false)
{
base.RaisePropertyChanged(propertyName、oldValue、newValue、broadcast);
if(propertyName==nameof(SelectedItem))
加载();
}
}
看起来您使用的是7.1下的C版本。在这种情况下,您需要使用default(T)
,而不是简单地使用default
。是指向默认值表达式的文档的链接。能否包括Set
和base的实现。请将属性更改为RaisePropertyChanged
?没有它们,我们只能猜测它们是如何工作的。根据我目前的猜测,一切都很糟糕,我不完全理解你的意思。附带说明:我使用MVVMLight(最新版本)实现属性。这段代码在VS2019中运行良好。