在构造方法中,有些参数是只读属性,只层在最初赋值,但是在最初赋值的时候如何进行保护?比如下面的构造方法中name是只读属性,在对它进行赋初值的时候,如果赋的是数字或特殊符号,怎么报错.
class Student
{
public Student(string name)
{
this.name = name;
}
string name;
public string Name
{
get { return name; }
}
}
这个问题你问题太基础了吧、你在构造函数中接收到的值我们可以在构造函数中判断晒、满足你的要求的时候我们才对保护的属性赋值、不满足的值直接抛出异常就OK了,在set中也可以判断的、
例如:
class Student
{
public Student(string name)
{
if(name=="12")
{
//程序抛出异常就不会往下执行了
thorw new Exception("请输入正确的姓名");
}
this.name = name;
}
string name;
public string Name
{
get { return name; }
}
}
class Program
{
static void Main(string[] args)
{
Student stu = new Student("12");
Console.WriteLine(stu.Name);
Console.ReadKey();
}
}
在 Student 类的构造函数中加 if 语句判断 name 赋的是数字或特殊符号时给予提示重新输入 name ,使用正则表达式\d{9}来判断字符串中是否有数字代码如下:
class Student
{
public Student(string name)
{
Regex r = new Regex(@ "\d{9} "); //使用正则表达式\d{9}来判断字符串中是否有数字
Match m;
m = r.Match(name);
if (m.Success) //如果赋的是数字或特殊符号就结束
return;
this.name = name;
}
string name;
public string Name
{
get { return name; }
}
}
class Program
{
static void Main(string[] args)
{
Student stu = new Student("12");
Console.WriteLine(stu.Name);
Console.ReadKey();
}
}