c# - 有没有办法为 VS2015 实现类似的 Raise Property Changed?
问题描述
似乎我在 VS2015 中有以下代码的语法错误。错误听起来像:
'?' 类型的值 不能用作默认参数,因为没有标准转换为类型“T”
有没有办法在 VS2015 中实现类似的“提高属性更改”?
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();
}
}
解决方案
看起来您使用的是 7.1 以下的 C# 版本。在这种情况下,您将需要使用default(T)
,而不是简单地default
. 这是默认值表达式文档的链接。
推荐阅读
- reactjs - 同步加载 React Provider 组件的模式
- react-native - 无法获取令牌 - 使用异步存储方法 - 反应原生(Expo)
- conditional-statements - 自R中最后一次满足条件以来如何对行求和
- java - Spring Boot Rest 应用程序 - 查询执行速度非常慢或失败
- c# - Selenium remotely download file in IE c#
- jakarta-mail - JavaMail work on localhost but not on server
- android - 此错误(删除构建工具版本并同步项目)
- c# - 在哪里以及如何将 T 实体映射到多个不同的实体?
- c# - 组合框中的鼠标检测
- ios - 在推送的 ViewController 中隐藏 TabBar 的问题,TabBar 在一些延迟后出现