在x ++声明后真的需要分号吗?

Mar*_*elo 10 declaration x++ axapta

正如Microsoft Dynamics AX 2009编程:入门一书中所述,需要在x ++中声明后添加分号:

只要第一行代码不是关键字,变量声明后的额外分号就是强制性的.分号告诉编译器变量声明已经结束.在分号后面不能声明新变量.

(直接从书中复制,不变,如果需要我会删除它)

但是,当我删除分号并运行作业时,绝对没有错误或问题:

static void Job1(Args _args)
{
    str string1 = "STACKOVERFLOW";
    ;
    print string1;
    pause;
}
Run Code Online (Sandbox Code Playgroud)

就像

static void Job2(Args _args)
{
     str string1 = "STACKOVERFLOW";

     print string1;
     pause;
}
Run Code Online (Sandbox Code Playgroud)

真的需要吗?我应该习惯使用它吗?

Dre*_*ann 14

这里的解释相当优雅.

一个关键的引用[强调我的]:

"你需要额外分号的原因是因为编译器不能总是看到变量声明的结束位置.如果你没有帮助,它会猜测.而且猜测并不是很好."

当编译器正在分析代码时,它会检查一行上的第一个单词是否与类型名称(AOT对象)匹配.如果它是类型名称,则编译器将该行视为变量声明.在这种情况下,变量名应该是下一个.


小智 8

随着AX 2012的发布,没有必要在变量声明后添加额外的分号.

http://msdn.microsoft.com/en-us/library/aa636895.aspx

  • 严格来说,情况并非如此:http://msdn.microsoft.com/en-us/library/cc641200.aspx"从Microsoft Dynamics AX 2012开始,您很少需要在X ++方法中的第一个语句之前包含分号但是,在.NET Framework中调用静态方法的X ++方法中需要使用分号." 更多信息请点击此处:http://erptechnician.net/2012/06/30/method-not-found-error-xpp-call-static-method-dotnet-class/这是有案例,但很少有人可能,即使在AX 2012中也需要分号. (4认同)

Jay*_*ker 6

如果代码的主体不是以关键字开头,则只需要分号.在您的示例中,您的代码以print内置关键字开头.如果您曾尝试使用以下代码启动代码:string1+=".COM";您将收到错误消息.

Dynamics AX 2009是AX的最后一个版本,需要额外的分号.AX 6.0应该解决这个问题:mfp的两分钱:这个分号有什么用?