你能告诉我 TrimNull() 是否是多余的,我是否应该使用替代方案?
例如:
string username = UsernameTextBox.Text.TrimNull();
我被告知没有定义或扩展方法。也许我缺少一个参考?
更新:
如果值为 NULL readable
,返回的最多方法是什么?empty string
你能告诉我 TrimNull() 是否是多余的,我是否应该使用替代方案?
例如:
string username = UsernameTextBox.Text.TrimNull();
我被告知没有定义或扩展方法。也许我缺少一个参考?
更新:
如果值为 NULL readable
,返回的最多方法是什么?empty string
没有这样的功能TrimNull(String)
- 它不会做任何事情。字符串要么为空,要么为非空,不能同时包含两者。如果字符串为空,则静态函数TrimNull(myString)
将无法从字符串中“删除”任何内容。如果它不为空,则不会NULL
删除。更糟糕的是,如果 TrimNull 是一个实例方法,如果 myString 是一个实例方法,则myString.TrimNull()
只会导致异常NULL
- 因为您不能在空引用上调用任何方法。
如果您的目标是修剪字符串周围的空白字符,只需使用myString.Trim()
.
如果您的目标是检测字符串是否为空,请使用myString == NULL
如果您的目标是检测字符串是空的还是空的,请使用String.IsNullOrEmpty(myString)
如果您的目标是从数据流中修剪尾随空字符 ( \0
),请尝试以下操作:
myString.TrimEnd(new char[] { '\0' } )
但正如 Frédéric Hamidi 所说,如果您指的是后者,用户将很难将空字符放入 TextBox,因此您在处理他们的输入时不必担心这种情况。
我通常使用 String.IsNullOrWhiteSpace(),像这样:
string username = (String.IsNullOrWhiteSpace(UsernameTextBox.Text) ?
null : UsernameTextBox.Text.Trim());
这样,如果.Text
属性为 null,则不会导致异常。
如果您愿意,您可以为此创建自己的扩展方法:
public static class StringExtensions
{
public static string TrimNull(this string value)
{
return string.IsNullOrWhiteSpace(value) ? value : value.Trim();
}
}
将此添加到您的项目中,您的代码将起作用。
这只是一个替代方案。
为 NULL 的字符串不是它的值。它是一个状态。这意味着它没有被分配内存(因为它是一个引用类型)。如果它是一个值类型的数据类型,它会被自动分配一个默认值,比如 int 它的 0 等等
你应该使用
if(!String.IsNullOrEmpty(UsernameTextBox.Text))
string username = UsernameTextBox.Text.Trim();