标题: 构造方法中,对只读属性的参数如何保护??? [打印本页] 作者: 肖云 时间: 2012-6-2 01:30 标题: 构造方法中,对只读属性的参数如何保护??? 在构造方法中,有些参数是只读属性,只层在最初赋值,但是在最初赋值的时候如何进行保护?比如下面的构造方法中name是只读属性,在对它进行赋初值的时候,如果赋的是数字或特殊符号,怎么报错.
class Student
{
public Student(string name)
{
this.name = name;
}
string name;
public string Name
{
get { return name; }
}
} 作者: G_Xiaotao 时间: 2012-6-2 08:29
哎呀 这个似乎我也不知道也 但是我知道肯定是在return中写判断语句 就是不知道该怎么写 我也想知道!!嘿嘿作者: 何拴绪 时间: 2012-6-2 10:25
你可以将要只读属性直接在定义为私有的,不传递给构造函数,然后提供共有的方法给外部访问,或者可以在构造函数中将只读属性写定,同样提供共有方法来是外部访问。作者: 王针 时间: 2012-6-2 12:50
public Student(string name)这里的参数就是string,如果传过来的参数不是string类型的话,你的语句在编译的时候就应该出错了吧。 作者: 刘豪 时间: 2012-6-2 16:18
在保证你在构造函数中穿的参数是string的话,参数里包含数字和特殊字符不会出错。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Student
{
class Student
{
public Student(string name)
{
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();
}
}
}
能正确运行作者: 蒋春 时间: 2012-6-2 23:25
这个问题你问题太基础了吧、你在构造函数中接收到的值我们可以在构造函数中判断晒、满足你的要求的时候我们才对保护的属性赋值、不满足的值直接抛出异常就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();
}
} 作者: 杨雪 时间: 2012-6-6 23:58
在构造函数内用if进行判断或者用正则表达式进行匹配。作者: 许庭洲 时间: 2012-6-7 08:39
在 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();
}
}作者: G_Xiaotao 时间: 2012-6-7 16:45
public Student(string name)
{
if(name=="12")
{
//程序抛出异常就不会往下执行了
thorw new Exception("请输入正确的姓名");
}
this.name = name;
正则表达式 似乎我好想不是很清楚也 但是 throw new exception(“??”) 这个我是知道一 点 但是 name = “12” 这个是什么意思呢? 还请解释一下