理解参考类型的问题

时间:2011-09-23 08:43:30

标签: .net silverlight telerik reference-type

我从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;

为什么会有不同?

1 个答案:

答案 0 :(得分:2)

C#中的引用类型是有效的对象指针。在您的示例中,xy是对象指针,而不是对象本身。如果更改指针,则不更改对象。您声明,x 不会 也会变为空。这个假设/例子是不正确的。

如果您通过任一变量调用了集合上的.Clear(),那么指向该集合的两个指针都将显示0个条目,但是您需要解释它正在尝试做什么,所以我可以解释一下一个具体的例子。

但是,如果在其他地方引用(例如,通过其他列表),

.Clear()将不会销毁列表中的任何子项。