Changes to the X++ language in Dynamics 365 for Operations
For the most part, the X++ language in Dynamics 365 for Operations is the same as it has always been. This is good news for all of us who have been active in the language for several years. Learning a new language is one thing we don’t need to worry about when moving to the latest version of the product. Having said that, here are some small language tweaks you might find interesting:
7 Language tweaks to X++
1. You can declare variables anywhere you want to. Variables don’t have to be declared before you use them.
2. In all previous versions, if you declared a variable in the classDeclaration you could not set it in the classDeclaration. Now you can set them as soon as you declare them.
3. You can use constants rather than macros. Macros are still supported but they appear to be well on their way out of the language.
4. The keyword var can be used when declaring variables. You don’t have to specify the exact type; the system will figure it out for you. This feels like lazy programming so you may or may not be interested in this change.
5. In try/catch statements you can use a finally block that will get executed regardless of whether an exception is thrown.
6. When referring to managed assemblies you can add a using statement to your X++ class. Once you have a using statement, you don’t have to use the full namespace in your X++ code to call the objects within the referenced assembly.
7. When building cross company statements, if you want to select from a subset of companies, you do not have to add the subset to a container. You can put the companies directly in the select statement like this:
select crossCompany : ([‘company1’] + [‘company2]) custTable;
Under the terms of this license, you are authorized to share and redistribute the content across various mediums, subject to adherence to the specified conditions: you must provide proper attribution to Stoneridge as the original creator in a manner that does not imply their endorsement of your use, the material is to be utilized solely for non-commercial purposes, and alterations, modifications, or derivative works based on the original material are strictly prohibited.
Responsibility rests with the licensee to ensure that their use of the material does not violate any other rights.