我从WCF服务ObservableCoolection
获得MyTypes = e.Result;
ObservableCollection<MyType> MyTypes // it's a property of _myTypes
<telerik:RadGridView x:Name="grdSrL" ItemsSource="{Binding MyTypes}" SelectedItem="{Binding SelectedMyType, Mode=TwoWay}"
public ShowroomLog SelectedMyType
{
get { return _selectedMyType; }
set
{
if (_selectedSMyType != value)
{
_selectedMyType = value;
RaisePropertyChanged(SelectedMyTypePropertyName);
}
}
}
从Web服务中获取这些集合后,所选项目由网格设置,之后我执行:
SelectedMyType = null;
为什么收集后的项目都不为空?
如果我这样做:
var x = new Car();
var y = x;
和
y = null;
然后x也是null;
为什么会有不同?
答案 0 :(得分:2)
C#中的引用类型是有效的对象指针。在您的示例中,x
和y
是对象指针,而不是对象本身。如果更改指针,则不更改对象。您声明,x 不会 也会变为空。这个假设/例子是不正确的。
如果您通过任一变量调用了集合上的.Clear()
,那么指向该集合的两个指针都将显示0个条目,但是您需要解释它正在尝试做什么,所以我可以解释一下一个具体的例子。
.Clear()
将不会销毁列表中的任何子项。