C# 谁通过了考试;args";主要方法是什么?

C# 谁通过了考试;args";主要方法是什么?,c#,java,C#,Java,我试图运行一个小型的c#和java程序(使用VS和NetBeans,而不是从命令行)并打印args[0]的值,但我得到了一个索引AutoFrangeException 我知道args用于传递命令行参数,但它在main方法中仍然是的,因此如果没有args参数传递给它,程序将如何运行?Java允许空数组;i、 e String[] args = new String[0]; 由于index>=args.length,异常是一致的 关于这个特定的主题,还有一点需要注意:与C程序等不同,arg0不是程

我试图运行一个小型的c#和java程序(使用VS和NetBeans,而不是从命令行)并打印args[0]的值,但我得到了一个
索引AutoFrangeException


我知道
args
用于传递命令行参数,但它在main方法中仍然是的,因此如果没有
args
参数传递给它,程序将如何运行?

Java允许空数组;i、 e

String[] args = new String[0];
由于
index>=args.length
,异常是一致的


关于这个特定的主题,还有一点需要注意:与C程序等不同,arg0不是程序本身。因此,使用空数组调用
main(String[])
是很常见的。

如果没有参数,数组将是空的-如果没有传递数组,则会有
NullReferenceException

如果在命令行上传递,则args[]数组中只有元素

java my.test.MyTest arg1 arg2

这将导致在arg[]数组中传递参数arg1和arg2。如果未传递任何参数,则arg[]数组的长度为0,因此访问任何索引都会引发异常。

在某些情况下,调用命令行exe时不包含任何arg是完全合理的。
args
参数用于告诉您是否传递了args,如果传递了args,它们是什么

那么,如果没有向程序传递args参数,程序将如何运行? 创建程序时,将分配一个新数组,并用命令行中的值填充该数组

如果没有(因为您没有在IDE中指定它们),数组将为空(不为null,至少在Java中不为空)

避免使用
索引autofrangeexception
您必须要么不使用参数,要么指定默认值并验证args数组长度

例如(在Java中)


它首先检查数组args的长度?因此它将为空且不为null,因此程序将正常运行…谢谢!
public class YourClass {
    public static void main( String [] args ) {  
          String param = "someDefault";
          // validate args.length 
          if( args.length > 0 ) { // if there is a parameter
              param = args[0]; // use it 
          }
          // continue with "param" already defined.

    }
 }