属性或索引器不能分配给“ - ”它是只读的 [英] Property or indexer cannot be assigned to "--" it is read only

查看:624
本文介绍了属性或索引器不能分配给“ - ”它是只读的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码

  private   readonly   string  _cstrvalueMember;  //  保留值 
private readonly string _cstrdisplayMember;

object obj;
LookupDTO lkpDTOo =(LookupDTO)obj;
if (lkpDTOo.strValueMember == 3
{
lkpDTOo.strDisplayMember = - ;
}



lkpDTOo.strDisplayMember = - ; 这里我收到的错误如< pre lang =vb> 错误 50 Property indexer ' XXX.DTO.LookupDTO.strDisplayMember '无法分配 - 它是只读的





即使我删除了readonly并将其公开,但它不是working

解决方案

您还没有在班级中为 strDisplayMember 定义setter。



尝试

  public   string  strDisplayMember 
{
get { return _cstrdisplayMember; }
set { this ._ cstrdisplayMember = value ; }

}

你和strValueMember有类似的问题。



这是一个刷新的参考< a href =http://www.dotnetperls.com/property>属性 [ ^ ]


您必须了解变量的范围和访问权限!

这里有一个只读属性(并且它是只读,因为它只有属性 getter ,所以你只能得到它的值):

  public   string  strDisplayMember 
{
get { return _cstrdisplayMember; }
}



要使它可写,你必须添加一个属性 setter (可以设置其值),类似于这:

  public   string  strDisplayMember 
{
get { return _cstrdisplayMember; }
set {_cstrdisplayMember = value ; }
}



http:/ /msdn.microsoft.com/en-us/library/w86s7x04.aspx [ ^ ]

---

帮自己一个忙,学习C#的这些基本元素 - 不要写任何代码直到你理解它们......


你需要一个属性 setter



例如< br $>


  public   string  strDisplayMember 
{
get { return _cstrdisplayMember; }
set {cstrdisplayMember = value ;}
}





否则该物业是只读的


I have the following code

private readonly string _cstrvalueMember;    //Holds value
private readonly string _cstrdisplayMember;

object obj;
LookupDTO lkpDTOo =(LookupDTO) obj;
if (lkpDTOo.strValueMember == "3")
{
    lkpDTOo.strDisplayMember = "--";
}


But lkpDTOo.strDisplayMember = "--"; here I am getting error like

Error   50  Property or indexer 'XXX.DTO.LookupDTO.strDisplayMember' cannot be assigned to -- it is read only 



Even though I removed readonly and made it public it is not working

解决方案

You have not defined the setter for strDisplayMember in your class.

Try

public string strDisplayMember
{
        get { return _cstrdisplayMember; }
        set { this._cstrdisplayMember = value; }

}

You have a similar problem with strValueMember.

Here is a reference to brush up on Properties[^]


You have to learn what scope and access of a variable are!
You have here a read only property (and it's read only because it have only property getter, so you can only get its value):

public string strDisplayMember
{
  get { return _cstrdisplayMember; }
}


To make it writable you have to add a property setter (which enables to set its value), something like this:

public string strDisplayMember
{
  get { return _cstrdisplayMember; }
  set { _cstrdisplayMember = value; }
}


http://msdn.microsoft.com/en-us/library/w86s7x04.aspx[^]
---
Do yourself a favor and learn these basic elements of C# - do not write any code until you understand them by heart...


You need a property setter

e.g.

public string strDisplayMember
   {
       get { return _cstrdisplayMember; }
       set { cstrdisplayMember = value;}
   }



Otherwise the property is read-only


这篇关于属性或索引器不能分配给“ - ”它是只读的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆