gpt4 book ai didi

c# - "Object Reference Not Set..."对象创建

转载 作者:行者123 更新时间:2023-11-30 19:13:04 25 4
gpt4 key购买 nike

我有一个如下所示的类定义:

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; }
}

在一些可以访问 SolrObj 的代码中,我有这个:

SolrObj a = new SolrObj
{
id = edit_id,
title = textbox_title.Text,
description = textbox_description.Text,
url = textbox_url.Text,
};

但是,当上面的代码片段运行时,我得到一个 NullReferenceException。我不明白这是怎么发生的,因为我正试图在那里定义它。 a 是抛出异常的空对象。我该如何解决这个问题?

很抱歉这个简单的问题。上面的相同代码片段在另一个函数的其他地方工作,所以我在这里有点困惑。

编辑:我看到其中一个 Text 属性为空并导致此异常;感谢到目前为止的答案,对不起,我很愚蠢。我该如何解决这个问题?有没有一种方法可以测试赋值是否为 null 并给出一个空字符串?也许是三元运算符?

编辑 2:顺便说一句,这是个糟糕的问题。我截断了用于在此处发布的类,并排除了使用 element.SelectedItem.Text 的元素。 SelectedItem 是 null 值,这让我们感到困惑——下面质疑 TextBox 的 Text 为 null 的评论是正确的,这不是 null 也不应该是 null,这是混淆的一部分。空的东西是 element.SelectedItem(测试数据没有选择元素)。抱歉给您造成了困惑,再次感谢您的帮助。

最佳答案

您确定 textbox_title、textbox_description 和 textbox_url 都是非空的吗?

Text 属性为 null 不会导致对象创建时出现 null 引用异常,只有当其中一个变量实际上为 null 时。从他们的名字来看,他们不应该。如果由于某种原因它们可能为空,则您将不得不求助于

(textbox == null ? "" : textbox.Text);

但是,如果它们都存在但 Text 可能为 null,则您可以使用 null 合并运算符:

textbox.Text ?? ""

关于c# - "Object Reference Not Set..."对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4882013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com