【问题标题】:How to convert null value into string in c# .net?如何在c#.net中将空值转换为字符串?
【发布时间】:2013-08-05 07:51:47
【问题描述】:

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

我想检查验证,如果特定文本框(单元格)保持为空或空白,则它不应更新其值。

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

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

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

提前感谢所有答案。

【问题讨论】:

  • 如果e.NewValues[0] 为空,那么是的,你是对的——调用ToString() 会失败。 e.NewValues[0] 是什么数据类型?
  • if(e.NewValues[0].Equals(null))

标签: c# asp.net gridview


【解决方案1】:

你可以这样做:

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

【讨论】:

    【解决方案2】:

    另一种方式:

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

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

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

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

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

    【讨论】:

    • 你试过了吗?它将返回一个空字符串。
    • @LasseV.Karlsen 所以?这不是问题,因为string.IsNullOrEmpty 会以同样的方式对待null""。这是一个正确的答案。
    • 呃,最好多喝点咖啡,对不起,我的错。
    【解决方案3】:

    另一种(浪费的)方法是使用覆盖 ToString?? 的单例(过分杀伤力,但它让我可以使用 ?? :P)

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

    单例的代码在这里:

    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()
        {
        }
    }
    

    【讨论】:

      【解决方案4】:

      你可以使用这段代码

       (e.NewValues[0] == null) ? string.Empty : e.NewValues[0].ToString()
      

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

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

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

      【讨论】:

      • 您的第一行代码似乎返回一个字符串或一个布尔值,所以我认为不会编译(或做想要的事情)。您的意思是让IsNullOrEmpty 调用包含整个内容,而不仅仅是在最后一个表达式中?
      【解决方案5】:

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

      【讨论】:

        【解决方案6】:
        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 ::
                 }
             }
        }
        

        【讨论】:

          猜你喜欢
          • 2016-01-14
          • 2010-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-22
          • 2011-09-06
          • 1970-01-01
          相关资源
          最近更新 更多