C# 如何在c.net中将空值转换为字符串?

C# 如何在c.net中将空值转换为字符串?,c#,asp.net,gridview,C#,Asp.net,Gridview,我使用的是gridview的默认更新方法,它允许我通过将单元格转换为文本框来更新gridview中的行 我想检查验证,如果一个特定的文本框单元格保持为空或空白,那么它不应该更新其值 为此,我编写了以下代码: string.IsNullOrEmpty(e.NewValues[0].ToString()) 但它会给出一个错误,比如对象引用未设置为对象的实例。可能无法将e.Newvalues[0]的空值转换为字符串 所有答案都将提前感谢。您可以这样做: e.NewValues[0] == null

我使用的是gridview的默认更新方法,它允许我通过将单元格转换为文本框来更新gridview中的行

我想检查验证,如果一个特定的文本框单元格保持为空或空白,那么它不应该更新其值

为此,我编写了以下代码:

string.IsNullOrEmpty(e.NewValues[0].ToString())
但它会给出一个错误,比如对象引用未设置为对象的实例。可能无法将e.Newvalues[0]的空值转换为字符串

所有答案都将提前感谢。

您可以这样做:

e.NewValues[0] == null || e.NewValues[0].ToString() == string.Empty
如果e.NewValues[0]已经是一个字符串,则可以执行以下操作:

string.IsNullOrEmpty(e.NewValues[0])
从C 6开始更新,您还可以使用:

string.IsNullOrEmpty(e.NewValues[0]?.ToString())
甚至:

$"{e.NewValues[0]}" == string.Empty

在对e.NewValues[0]执行.ToString之前,需要检查它是否为null。

另一种方法:

String.IsNullOrEmpty(Convert.ToString(e.NewValues[0]));
一些可能不必要的解释:

Convert.ToString将为stringnull返回null,为objectnull或任何其他null返回空字符串

这两种情况都会给出预期的结果,因为我们正在使用String.IsNullOrEmpty进行检查


在任何情况下,它的行为都与someValue.ToString相同,只是它处理someValue为null的情况。

您可以使用这段代码

 (e.NewValues[0] == null) ? string.Empty : e.NewValues[0].ToString()
如果不为null,上述代码将返回等价字符串,否则将返回空字符串

否则,您可以使用以下代码。这将处理空的情况

string.IsNullOrEmpty(Convert.ToString( e.NewValues[0] )

另一种浪费的方法是使用具有重写ToString和??过度杀戮,但它让我使用??:P

单件的代码如下所示:

public sealed class Empty
{
    private static readonly Lazy<Empty> lazy =
        new Lazy<Empty>(() => new Empty());
    public override string ToString()
    {
        return "";
    }
    public static object _ { get { return lazy.Value; } }
    private Empty()
    {
    }
}

如果e.NewValues[0]为null,则是,您是正确的-对其调用ToString将失败。什么数据类型是e.NewValues[0]?ife.NewValues[0]。equalsNull您尝试过吗?它将返回一个空字符串。@LasseV.Karlsen那么?这不是问题,因为string.IsNullOrEmpty将以相同的方式处理null。这是一个正确的答案。呃,最好多喝点咖啡,对不起,我的错误。您的第一行代码似乎返回字符串或布尔值,因此我认为不会编译或执行所需的操作。您的意思是让IsNullOrEmpty调用包装整个内容,而不仅仅是在最后一个表达式中?
public sealed class Empty
{
    private static readonly Lazy<Empty> lazy =
        new Lazy<Empty>(() => new Empty());
    public override string ToString()
    {
        return "";
    }
    public static object _ { get { return lazy.Value; } }
    private Empty()
    {
    }
}
protected void grd_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
     GridViewRow row = grd.Rows[e.RowIndex];
     for (int i = 0; i <= row.Cells.Count; i++)
     {
         String str = ((TextBox)(row.Cells[i].Controls[0])).Text;
         if (!string.IsNullOrEmpty(str))
         { 
          //Your Code goes here ::
         }
     }
}