C#Public Property未处理的异常

时间:2012-11-13 11:52:55

标签: c# asp.net

我正在动态加载控件并将文本传递给控件。但是当我设置公共财产时,我得到了一个未经解决的例外。

我的控制权是:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace g247_Test.controls
{
    public partial class carousel_guards : System.Web.UI.UserControl
    {

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public String pcode
        {
            get
            {
                return pcode;
            }
            set
            {
                pcode = value;
            }
        }
    }
}

使用以下命令加载上一页的控件:

   carousel_guards webUserControl = (carousel_guards)Page.LoadControl("~/controls/carousel-guards.ascx");

            webUserControl.pcode = "rg402eg";
            phGuardsList.Controls.Add(webUserControl);

错误发生在集{表示刚刚未处理的异常

3 个答案:

答案 0 :(得分:3)

您的财产正在引用自己。您可以将其更改为:

 public String pcode { get; set; }

或定义私有字符串字段并使用:

private string _pcode;

public string Pcode
{
    get { return _pcode; }
    set { _pcode = value; }
}

如果使用大写字母(使用Pascal case

启动属性名称,也会更好

答案 1 :(得分:1)

这很可能是堆栈溢出异常。你基本上是在告诉回归本身,这将永远存在。

您可以执行Habib所说的并使用get; set;语法糖,但如果您想要更多控制,处理此问题的典型方法是创建一个字段来存储值,如下所示:

private string _pcode;

public string pcode { get { return _pcode; } set { _pcode = value; } }

答案 2 :(得分:0)

在进行get和set时,你引用了属性本身;你应该A)有一个底层变量来保存调用者无法访问的值,或者使用B)auto-implemented properties

private string _pcode
public String pcode {
  get { return _pcode; }
  set { _pcode = value; }
} 

或者,

public String pcode { get; set; }