如何在c#.net中将空值转换为字符串
本文关键字:空值 转换 字符串 net | 更新日期: 2023-09-27 18:26:21
我使用的是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
另一种方式:
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 ::
}
}
}