我有一个类定义,如下所示:
public class SolrObj
{
[SolrUniqueKey("id")]
public int id { get; set; }
[SolrField("title")]
public string title { get; set; }
[SolrField("description")]
public string description { get; set; }
[SolrField("url")]
public string url { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在一些可以访问SolrObj的代码中,我有:
SolrObj a = new SolrObj
{
id = edit_id,
title = textbox_title.Text,
description = textbox_description.Text,
url = textbox_url.Text,
};
Run Code Online (Sandbox Code Playgroud)
但是,当上面的代码片段运行时,我得到一个NullReferenceException.我不知道这是怎么发生的,因为我正试图在那里定义它.a是抛出异常的null对象.我怎样才能解决这个问题?
很抱歉这个简单的问题.上面的相同片段在另一个函数的其他地方工作,所以我有点困惑.
编辑:我看到其中一个Text属性为null并导致此异常; 谢谢你到目前为止的答案,对不起我是愚蠢的.我怎么能绕过这个?有没有办法可以在赋值时测试null并改为给出一个空字符串?也许是三元运营商?
编辑2:顺便说一句,这是一个糟糕的问题.我在此处截断了要发布的类,并排除了使用element.SelectedItem.Text的元素.SelectedItem是空值和让我们绊倒的东西 - 下面提到的TextBox的Text为null的评论者是正确的,这不是null,不应该是null,这是混乱的一部分.null是element.SelectedItem(测试数据没有选择元素).对不起,感到困惑,再次感谢您的帮助.
你确定textbox_title,textbox_description和textbox_url都是非空的吗?
Text仅当其中一个变量实际为null时,该属性为null将不会在对象创建时导致空引用异常.从他们的名字来看,他们不应该.如果由于某种原因它们可能为空,那么你将不得不诉诸于此
(textbox == null ? "" : textbox.Text);
Run Code Online (Sandbox Code Playgroud)
但是,如果它们都存在但Text可能为null,则可以使用null合并运算符:
textbox.Text ?? ""
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
344 次 |
| 最近记录: |