在一个类public class ViewModelCollection<T> : ObservableCollection<T> where T : class
中,我有方法:
public T CurrentItem
{
get { return defaultView.CurrentItem as T; }
set
{
// ** wrong when T is of type string ** if (value != defaultView.CurrentItem)
// ** wrong when T is of type string ** if (value != (T)defaultView.CurrentItem)
if (!EqualityComparer<T>.Default.Equals(value, (T)defaultView.CurrentItem))
{
defaultView.MoveCurrentTo(value);
OnPropertyChanged(new PropertyChangedEventArgs("CurrentItem"));
}
else return;
}
}
我不明白为什么普通==
运算符的行为如此,例如"New" != "New"
.
大概被问了一千遍了,还是不明白,一定是和泛型的使用有关吧?