我有一个包含许多输入的表单,每个表单Trim在处理之前都需要是med.在每次使用值时修剪这些都是费力的 - 而且不是很强大 - 因为每个在表单的代码隐藏中使用它们.
我想为我的每个属性做这样的事情:
private string _surname
public string Surname
{
get
{
return _surname.Trim();
}
set
{
_surname = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
Surname = txtSurname.Text;
}
Run Code Online (Sandbox Code Playgroud)
尽管如此,这看起来还是相当冗长.特别是对于具有大量输入的表格.也许只是:
private string _txtSurname;
protected void Page_Load(object sender, EventArgs e)
{
_txtSurname = txtSurname.Text.Trim();
}
Run Code Online (Sandbox Code Playgroud)
但是这与第一个例子没有相同的鲁棒性,如果我在其他地方分配相同的属性,我可能会忘记我需要先修剪.我觉得应该有一个更简洁的方法来处理这个问题.在那儿?
更新:扩展方法方法,虽然从可读性的角度来看功能不是很好.直觉上,调用foo.NullSafeTrim();哪里foo = null会抛出一个NullReferenceException.但是,由于它的实现方式,它没有.咩.
我同意增加.Trim()每个吸气剂和制定者都会很费力.特别是当你必须处理所有的空检查以避免NullReferenceExceptions.另一个使代码更紧凑的选项是使用扩展方法.例如:
public static class MyExtensions
{
public static string NullSafeTrim(this string value)
{
if (value != null)
{
value = value.Trim();
}
return value;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用以下模式:
private string _surname;
public string Surname
{
get { return _surname.NullSafeTrim(); }
set { _surname = value.NullSafeTrim(); }
}
Run Code Online (Sandbox Code Playgroud)
在使用扩展方法时需要考虑一些因素,您应该可以通过搜索SO来实现这些方法.
或者,您可以在处理值的任何类中执行所有修剪和空检查.