C# NET 3.5:属性或索引器不能分配给“--”,它是只读的

Posted

技术标签:

【中文标题】C# NET 3.5:属性或索引器不能分配给“--”,它是只读的【英文标题】:C# NET 3.5 : Property or indexer cannot be assigned to “--” it is read only 【发布时间】:2018-01-03 21:14:21 【问题描述】:

我有一个只读属性:

public CollectionView View  get; 

我正在尝试从类构造函数初始化它:

public MyClass()

   this.View = ......

但是出现了标题中描述的错误。我在 Visual Studio 2008 上使用 NET 3.5。我记得在更高版本的 .NET 和 Visual Studio 中,只读属性只能从构造函数初始化/分配。在 .NET 3.5 中不可能吗?如果没有,我该如何在 .NET 3.5 中做到这一点?我的意思是,我想要一个只读属性,并且只在构造函数中分配一次。

【问题讨论】:

【参考方案1】:

您可以使用只读支持字段和只有 getter 的属性。像这样

readonly CollectionView _view;

public CollectionView View  get return _view; 

public MyClass()

    _view = ....

【讨论】:

【参考方案2】:

在 C# 3.0 中,他们没有为只读自动属性添加特殊处理,因此您必须使用旧方法:

public class MyClass 
    private readonly CollectionView _View;
    public CollectionView View  get  return _View;  

    public MyClass() 
        this._View = ...;
    

【讨论】:

【参考方案3】:

我认为正确的语法应该是:

public CollectionView View  get; private set; 

【讨论】:

私有设置器的问题并不能阻止非构造方法更改属性值。

以上是关于C# NET 3.5:属性或索引器不能分配给“--”,它是只读的的主要内容,如果未能解决你的问题,请参考以下文章

不能将属性或索引器“string.this[int]”分配给——它是只读的

索引器(C# 编程指南)

索引器(C# 编程指南)

C# LINQ NET 3.5 SP1:使用 LINQ 按两个字段分组,并为组的所有成员分配一个相关的唯一 ID(整数)

C#索引器

C#索引器