В классе 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"
.
Возможно, вас спросили тысячу раз, но я все еще не понимаю, это должно быть связано с использованием дженериков?
Я в немного спешки, так что я не могу дать вам правильный ответ прямо сейчас, но попробуйте '' где T: IEquatable ''. http://msdn.microsoft.com/en-us/library/ms131187(v=vs.110).aspx Не уверен, хотя. –