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

本文关键字:空值 转换 字符串 net | 更新日期: 2023-09-27 18:26:21

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

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

为此,我写了以下代码:

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

但它给出了一个错误,类似于未设置为对象实例的对象引用。可能无法将e.Newvalues[0]的空值转换为字符串

感谢您提前回答所有问题。

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

您可以这样做:

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

另一种方式:

String.IsNullOrEmpty(Convert.ToString(e.NewValues[0]));

一点(可能不需要)解释:

Convert.ToString()将为(string)null返回null,为(object)null返回空字符串(或任何其他null)。

任何一种情况都会给出预期的结果,因为我们正在使用String.IsNullOrEmpty()进行检查。

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

另一种(浪费的)方法是使用具有重写的ToString??的单例(过度使用,但它允许我使用??:p)

(e.NewValues[0] ?? Empty._).ToString();

singleton的代码如下:

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) ? string.Empty : e.NewValues[0].ToString()

如果不是null,上面的代码将返回等价的字符串,否则将返回空字符串。

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

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

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

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