看下面代码,这个是判断端口号码是否有效,当端口号码为空的时候提示“端口号不能为空”,但是我百思不得其解的是它是怎么判断出除了数字,其它字符也是无效的呢?比如我参数传进来一个"ss" 它也会提示端口号无效。private int getValidPort(string port)
{
int lport; //测试端口号是否有效
try
{
if(port=="")
{
throw new ArgumentException("端口号为空,不能启动服务器");
}
lport = System.Convert.ToInt32(port);
}
catch(Exception e)
{
Console.WriteLine("无效的端口号:"+e.ToString());
this.rtbSocketMsg.AppendText("无效的端口号:"+e.ToString()+"\n");
return -1;
}
return lport;
}

解决方案 »

  1.   

    lport = System.Convert.ToInt32(port); 这句是转为数字,如果有异常,则为无效数字
      

  2.   

    lport = System.Convert.ToInt32(port);
    这行语句表示将port(string)转换成int32型,如果不能转换或转换失败,则引发异常,最后返回-1.
      

  3.   

    那这个port是string型的,我输入"ss"也是string型的,按这个应该不会引发异常的啊?
      

  4.   

    System.Convert.ToInt32方法,系统自己判断是否有异常!
      

  5.   

    try..
    正则表达式..if (Regex.Match(port, @"^\d+$").Success)
    {
       //说明是数字..
    }
    else
    {
        //说明不全是数字..
    }另外别忘了:
    using System.Tex.RegularExpressions;
      

  6.   

    楼上地,不要拿天书出来吓人好伐。
    麻烦县给搂住讲下什么是正则,撒叫命名空间,Regex咋封装地