C# 如何强制执行字符串中允许的最大和最小字符数
我想限制我的字符串,这样你就必须输入最少3个字符,最多10个字符。在下面的代码中是否可能出现这种情况 main.cs:C# 如何强制执行字符串中允许的最大和最小字符数,c#,string,properties,C#,String,Properties,我想限制我的字符串,这样你就必须输入最少3个字符,最多10个字符。在下面的代码中是否可能出现这种情况 main.cs: class Program { static void Main(string[] args) { Something hello = new Something(); string myname; Something test = new Something(); myname = Con
class Program
{
static void Main(string[] args)
{
Something hello = new Something();
string myname;
Something test = new Something();
myname = Console.ReadLine();
test.Name = myname;
}
}
使用属性初始化:
class Okay : IYes
{
private string thename;
public string Name
{
get {return thename;}
set {thename = value;} //what to put here???
}
}
setter
可能不是检查的最佳位置。您应该在输入点进行检查:
string myname = "";
while (myname.Length<3 || myname.Length >10)
{
Console.WriteLine("Please enter your name (between 3 and 10 characters");
myname = Console.ReadLine();
}
test.Name = myname;
string myname=”“;
while(myname.Length10)
{
Console.WriteLine(“请输入您的姓名(3到10个字符之间”);
myname=Console.ReadLine();
}
test.Name=myname;
显然,您可以采取一些步骤使其更加用户友好:第一次失败后可能会出现不同的消息,一些摆脱循环的方法,等等。尝试以下方法:-
public string Naam
{
get { return thename; }
set
{
if (value.Length >= 3 && value.Length <= 10)
thename = value;
else
throw new ArgumentOutOfRangeException();
}
}
公共字符串Naam
{
获取{返回名称;}
设置
{
如果(value.Length>=3&&value.Length类正确:IYes
{
私有字符串名称;
公共字符串名
{
获取{返回名称;}
设置
{
如果(value==null)抛出新的ArgumentNullException(“名称”);
如果(value.Length<3 | | value.Length>10)
抛出新ArgumentOutOfRangeException(“名称”);
名称=值;
}
}
}
如果字符串太长,也可以截断该字符串,而不是仅使用(最多)前10个字符引发异常:
class Okay : IYes
{
private string name;
public string Name
{
get { return name; }
set
{
if (value == null) throw new ArgumentNullException("Name");
if (value.Length < 3) throw new ArgumentOutOfRangeException("Name");
name = string.Join("", value.Take(10));
}
}
}
private static void GenericTester()
{
Okay ok = new Okay {Name = "thisIsLongerThan10Characters"};
Console.WriteLine(ok.Name);
}
// Output:
// thisIsLong
class好的:IYes
{
私有字符串名称;
公共字符串名
{
获取{返回名称;}
设置
{
如果(value==null)抛出新的ArgumentNullException(“名称”);
如果(value.Length<3)抛出新ArgumentOutOfRangeException(“名称”);
name=string.Join(“,value.Take(10));
}
}
}
私有静态void GenericTester()
{
Okay ok=new Okay{Name=“thisislongerthan 10characters”};
Console.WriteLine(ok.Name);
}
//输出:
//这很长
定义“限制”。您可以在输入后再次询问;但控制台应用程序中没有UI验证。BradleyDotNet是正确的,没有默认验证。有一些设计模式使验证易于添加,但我猜这个家庭作业和设计模式在这一点上可能太混乱了。谢谢,这很有帮助,我定义了一个限制现在。添加了空检查。请注意,这意味着一旦设置了名称,就无法“清除”它!
class Okay : IYes
{
private string name;
public string Name
{
get { return name; }
set
{
if (value == null) throw new ArgumentNullException("Name");
if (value.Length < 3) throw new ArgumentOutOfRangeException("Name");
name = string.Join("", value.Take(10));
}
}
}
private static void GenericTester()
{
Okay ok = new Okay {Name = "thisIsLongerThan10Characters"};
Console.WriteLine(ok.Name);
}
// Output:
// thisIsLong