Источник:
http://blogs.msdn.com/b/mfp/archive/...y-keyword.aspx
==============
In AX7 X++ now supports the
readonly keyword. Semantically it is identical to
readonly in C#.
In short; it allows you to define members on a class that can only be initialized in the declaration and in the constructor.
class MyClass
{
readonly str identifier = "XYZ";
readonly str identifier2;
public void new(str _identifier)
{
identifier2 = _identifier;
}
public void foo()
{
// The field 'identifier2' is read only. A value cannot be assigned to it.
//identifier2 = "ABC";
}
}
The big question is "when to use it?" In my opinion the actual use scenarios are limited – simply because other language constructs are still missing.
In X++ we
still recommend the
construct pattern and the
newFrom pattern. These patterns recommend the new method to not have any parameters – readonly has little applicability, when the new method is parameter-less.
So why do we prefer parameter-less new methods?
- It enables serialization of classes using the pack/unpack pattern – all classes extending RunBase are subject to this.
- It enables the extension framework and smart customizations.
Once X++ supports getters/setters and method overloading (at least of the new method) – then readonly will become handy.
If you have a good use scenario for readonly - please share in the comments section below.
THIS POST APPLIES TO MICROSOFT DYNAMICS AX7 TECHNICAL PREVIEW; IS PROVIDED AS-IS AND CONFERS NO RIGHTS.
==============
Источник:
http://blogs.msdn.com/b/mfp/archive/...y-keyword.aspx