仅当 LiteralControl 尚未分配文本时,我如何才能覆盖 LiteralControl 的文本?

How can I overwrite a LiteralControl's text only if the LiteralControl has not already had text assigned to it?

此代码:

private void btnSave_Click(object sender, EventArgs e)
{
    LiteralControl message = null;
    try
    {
        message = new LiteralControl();
        Controls.Add(message);
        ConditionallyCreateList();
        SaveInputToList();
        List<ListColumns> listOfListItems = ReadFromList();
        GeneratePDF(listOfListItems); // using iTextSharp
    }
    catch (Exception ex)
    {
        message.Text = String.Format("Exception occurred: {0}", ex.Message);
    }
    if (message.Text.Length <= 1)
    {
        message.Text = "Saving the data and converting it to a PDF has been successful";
    }
}

...导致 NRE,在 "if (message.Text.Length <= 1)" 行抱怨。我想要完成的只是分配给消息的文本值,如果它还没有包含异常消息的话。

Message.Text 可能为空。您可以执行以下操作:

if (message.Text == null || message.Text.Length <= 1)
{
    message.Text = "Saving the data and converting it to a PDF has been successful";
}

如果你稍微清理一下你的语义(message.Text == "" 是什么意思?)以下将起作用:

if (message.Text.IsNullOrEmpty())
{
    message.Text = "Saving the data and converting it to a PDF has been successful";
}

try的成功分支和失败分支都需要message,所以需要提前创建:

private void btnSave_Click(object sender, EventArgs e)
{
    LiteralControl message = new LiteralControl();
    try
    {
        Controls.Add(message);
        ConditionallyCreateList();
        SaveInputToList();
        List<ListColumns> listOfListItems = ReadFromList();
        GeneratePDF(listOfListItems); // using iTextSharp
        message.Text = "Saving the data and converting it to a PDF has been successful";
    }
    catch (Exception ex)
    {
        message.Text = String.Format("Exception occurred: {0}", ex.Message);
    }
}