public static int Main(string[] args)

xiongxyt2 2009-09-06 10:40:16
程序如下:
using System;

class IfApp
{
public static int Main(string[] args)
{
//如果命令行参数小于一个,则显示程序正确用法,退出程序
if(args.Length < 1)
{
Console.WriteLine("Usage: ifApp char");
return 1;
}

//获得第一个命令行参数第一个字母
//把该字母赋给变量chLetter
char chLetter = args[0][0];

//如果字母大于等于字符'A'
if(chLetter >= 'A')
{
//同时,字母小于字符'Z'
//则该字母为大写字母
if(chLetter <= 'Z')
{
Console.WriteLine("{0} 是个大写字母", chLetter);
return 0;
}
}

//如果字母界与字符'a'和'z'之间
//则该字母为小写字母
if(chLetter >= 'a' && chLetter <= 'z')
{
Console.WriteLine("{0} 是个小写字母", chLetter);
return 0;
}

//如果字母为数字
if(Char.IsDigit(chLetter))
{
Console.WriteLine("{0} 是个数字", chLetter);
return 0;
}

//缺省地(以上条件都不符合),则该字母为特殊字符
Console.WriteLine("{0} 是个特殊字符", chLetter);
return 1;
}
}
运行结果为:Usage: ifApp char
但是有char chLetter = args[0][0]这句话有异常,说是数组越界。
我的问题是:public static int Main(string[] args)种的string[] args开始时的数组长度为多大?应该如何避免异常?


...全文
220 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
seraphgxh 2009-09-09
  • 打赏
  • 举报
回复
如果没有任何参数,args 的长度为1。args[0]是程序名。
robin521 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyi8808 的回复:]
如果没有命令行参数时,args 的长度为0,args[0] 就会导致数组越界。你的程序没问题,args.Length < 1 时,你的程序已经 return 1; 了,不会执行后面的语句。
[/Quote]
是啊,是啊.
yulien 2009-09-07
  • 打赏
  • 举报
回复
ding
wuyi8808 2009-09-07
  • 打赏
  • 举报
回复
如果没有命令行参数时,args 的长度为0,args[0] 就会导致数组越界。你的程序没问题,args.Length < 1 时,你的程序已经 return 1; 了,不会执行后面的语句。
xiongxyt2 2009-09-07
  • 打赏
  • 举报
回复
谢谢1楼的回答。

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧