足够新的C#。
只是不能用绳子修剪我的头。我希望能够修剪字符串之后的空白,因为它弄乱了我的数据库,我得到的空白量。这是我想要的其中一个实体。
[RegularExpression(@"^[a-zA-Z0-9 ]+$", ErrorMessage = "Use letters and numbers only please")]
[Display(Name = "Serial Number ")]
public string SerialNo
{
get
{
try
{
string serialNumber = SerialNo.Trim();
return serialNumber;
}
catch (Exception e)
{
Console.WriteLine(e);
return SerialNo;
}
}
set
{
this.SerialNo = SerialNo;
}
}
我不知道我是否认为这一切都是错的,所以一些帮助将不胜感激!
编辑:我的错误是"未处理的类型' System.StackOverflowException'发生在PhotocopierInformationManagementServices.dll"
答案 0 :(得分:7)
以下内容将以 stackoverflow excption 结束,因为它将继续无限执行,因为this.SerialNo=
块内的set
会再次调用set block:
set
{
this.SerialNo = SerialNo; // calling set of SerialNo recursively
}
您可以将代码更改为:
private string _serialNo;
[RegularExpression(@"^[a-zA-Z0-9 ]+$", ErrorMessage = "Use letters and numbers only please")]
[Display(Name = "Serial Number ")]
public string SerialNo
{
get
{
try
{
_serialNo= _serialNo.Trim();
return _serialNo;
}
catch (Exception e)
{
Console.WriteLine(e);
return _serialNo;
}
}
set
{
_serialNo= value;
}
}
但我建议在setter中修剪它,以便你的属性看起来像:
private string _serialNo;
[RegularExpression(@"^[a-zA-Z0-9 ]+$", ErrorMessage = "Use letters and numbers only please")]
[Display(Name = "Serial Number ")]
public string SerialNo
{
get
{
return _serialNo;
}
set
{
_serialNo= value?.Trim();
}
}
答案 1 :(得分:2)
您使用C#属性错误。用我的例子:
private string serialNumber;
public string SerialNo
{
get { return serialNumber; }
set { serialNumber = value?.Trim(); }
}
答案 2 :(得分:1)
问题不在于修剪,而是在set上你递归地调用get。正确的语法是
private string serialNo;
[RegularExpression(@"^[a-zA-Z0-9 ]+$", ErrorMessage = "Use letters and numbers only please")]
[Display(Name = "Serial Number ")]
public string SerialNo
{
get
{
return serialNo;
}
set
{
this.serialNo = value.Trim();
}
}
答案 3 :(得分:0)
您是否尝试过string serialNumber = SerialNo.TrimEnd();?
如果不起作用,请尝试使用SerialNo.Replace(“”,“”);