NullReferenceException是未处理的异常

时间:2013-07-24 21:06:50

标签: c#

public applybuttonform(string s)
{
    InitializeComponent();
    passingid.Text = s;   
}

当我尝试这样做时,我得到了异常

  

NullReferenceEexception未处理

public applybuttonform(string s)
{
    InitializeComponent();
    if(string.IsNullOrEmpty(s))
    {
       passingid.Text = s;
    }         
}

如果我这样做我没有得到错误,但这并没有解决我的问题,因为我必须使用从另一个表单传递的字符串's'。那么,我现在能做什么呢?

3 个答案:

答案 0 :(得分:4)

您的passingid变量为空。错误在第二个版本中消失了,因为您实际上确保s为空或空,而不是,因此不会发生分配给passingid.Text

TextBox passingid;
passingid.Text = s;

将产生您的错误,因为此时passid为null。

TextBox passingid = new TextBox();
passingid.Text = s;

会正常工作。

答案 1 :(得分:1)

嗯,你可能想要

if(!string.IsNullOrEmpty(s))
{
   passingid.Text = s;
} 

但这只是猜测。您可能希望使用整个异常编辑您的问题,包括哪个语句正在生成异常。

答案 2 :(得分:0)

请考虑以下代码:

public class PassingID2
{
    private string _Text = null;
    public string Text
    {
        get { return _Text; }
        set { if (_Text.Length <= 0) _Text = value; }
    }
}
public class PassingID1
{
    public string Text { get; set; }
}

然后代码中的其他地方:

string s = string.Empty;

PassingID1 passingid1;
passingid1.Text = s; //This will cause a NullReferenceException because passingid1 is null

PassingID2 passingid2 = new PassingID2();
passingid2.Text = s; //This will cause a NullReferenceException because _Text is null

如您所见,两种情况都会导致异常。

另请注意,问题不在于“s”