c#限制输入的值
- 字段和属性
- 标签
- 例子
- 范围
- 长度
PS:本人学生一名,自学,没有项目经验,可能对程序的理解有误,有问题欢迎提出。
欢迎大家到本作者的B站的频道,去观看更多的内容,
https://www.bilibili.com/read/cv15787937
字段和属性
首先,我们需要知道字段和属性。属性的作用是为了防止输入错误的值。而字段就是存储值的空间。
通俗来讲就是属性保护着字段,字段里面的所有东西都由属性去排查有没有问题,属性起一个保护层的作用,防御所有不正确的数据,将正确的数据给字段。
static void Main (string[] args)
{
A a1 = new A ();
a1.Id = Convert.ToInt32(Console.ReadLine());//将id改为非正常值
Console.WriteLine ("a1.Id:" + a1.Id);//输出非正常值的id
A a2 = new A ();
a2.Id = Convert.ToInt32(Console.ReadLine());//将id改为正常值
Console.WriteLine ("a2.Id:" + a2.Id);//输出正常值的id
Console.ReadKey ();
}
public class A
{
private int id;//假设输入id的范围是0-9
public int Id
{
get
{
return id;//输出
}
set
{
if (value >= 10)//判断赋值的数值,是否在我们假设的范围之间
{
id = value % 10;//超过10 ,取个位置
Console.WriteLine("错");
}
else
{
id = value;//没有超过,就直接赋值
Console.WriteLine("对");
}
}
}
}
结果如下
在属性中,set{}里写入代码,value是你输入的数据。只要通过对value判断数值即可。
标签
声明一个标签,使用goto语句让程序回到**Console.ReadLine()**重新赋值
简单的来说就是 goto语句,会让程序前往到任意位置,这个位置需要用到标签声明。
static void Main(string[] args)
{
int a = 0;//输入范围:0-9
Console.WriteLine("输入a");
input_a://写一个标签来标记位置
a = Convert.ToInt32(Console.ReadLine());//输入a
if (a >= 10)//判断赋值的数值,是否在我们假设的范围之间
{
Console.WriteLine("重新赋值a");
goto input_a;//返回赋值时的代码,进行重新赋值
}
Console.WriteLine("a:"+a);//输出a
Console.ReadKey();
}
结果如下
不过,在变量为空时,将会一个图下报错,其实就是一个输入为空的报错
此时,我们可以使用try{}
try语句,是可以捕获到所有的异常,执行catch{}里面的语句
static void Main(string[] args)
{
//int?是允许赋空值
int? a = null;//输入范围:0-9
Console.WriteLine("输入a");
input_a://写一个标签来标记位置
try
{
a = Convert.ToInt32(Console.ReadLine());//输入a
if (a >= 10)//判断赋值的数值,是否在我们假设的范围之间
{
Console.WriteLine("重新赋值a");
goto input_a;//返回赋值时的代码,进行重新赋值
}
}
catch
{
Console.WriteLine("输入为空");
goto input_a;//返回赋值时的代码,进行重新赋值
}
Console.WriteLine("a:"+a);//输出a
Console.ReadKey();
}
加上try{}语句,就可以获取到输入变量的为空异常,结果如下
这时,输入为空的情况也能得到处理。即使使用字段也是同样的道理。
例子
限制值就是几种情况,范围,长度,等等情况,以下就解释两种情况。
PS:作者用习惯try{}的方法,毕竟很好理解,逻辑清晰点。其实两种都可以。
范围
static void Main(string[] args)
{
//int?是允许赋空值
int? a = null;//输入范围:10-20
Console.WriteLine("输入a");
input_a://写一个标签来标记位置
try
{
a = Convert.ToInt32(Console.ReadLine());//输入a
if (a < 10||a>20)//判断赋值的数值,是否在我们假设的范围之间
{
Console.WriteLine("重新赋值a");
goto input_a;//返回赋值时的代码,进行重新赋值
}
}
catch
{
Console.WriteLine("输入为空");
goto input_a;//返回赋值时的代码,进行重新赋值
}
Console.WriteLine("a:" + a);//输出a
Console.ReadKey();
}
长度
static void Main(string[] args)
{
//int?是允许赋空值
string? a = null;
Console.WriteLine("输入a");
input_a://写一个标签来标记位置
try
{
a = Console.ReadLine();//输入a
if (a.Length>=5)//判断赋值的数值,是否在我们假设的范围之间
{
Console.WriteLine("重新赋值a");
goto input_a;//返回赋值时的代码,进行重新赋值
}
}
catch
{
Console.WriteLine("输入为空");
goto input_a;//返回赋值时的代码,进行重新赋值
}
Console.WriteLine("a:" + a);//输出a
Console.ReadKey();
}
看到这里,我们发现解决问题的方法都大同小异,都差不多。
只要会使用字段和标签,就可以了。
欢迎大家去作者本人的B站的频道,观看相同的内容,拜托了,增加浏览量一下
https://www.bilibili.com/read/cv15787937