отвечаю сам себе:
в c# принято использовать публичные проперти.
в языке придуман специальный синтакис для инициализации публичных пропертей
https://docs.microsoft.com/ru-ru/dot...ct-initializer
в результате, в c# доступны такие конструкции для инициализации
Код:
StudentName student4 = new StudentName
{
FirstName = "Craig",
LastName = "Playstead",
ID = 116
};
если в классе есть приватные переменные, то их можно проинициализировать только из конструктора.
причем в конструкторе будут только позиционные параметры.
Код:
StudentName student4 = new StudentName("private1", new DateTime(2001, 09, 11), 3.0)
{
FirstName = "Craig",
LastName = "Playstead",
ID = 116
};
с инициализатором возможны даже такие смешные конструкции
Код:
var team = new BaseballTeam
{
["RF"] = "Mookie Betts",
[4] = "Jose Altuve",
["CF"] = "Mike Trout"
};
но хоть понятно откуда эта зараза идетЪ.
вот, что угодно, лишь бы не делать в C# именованные параметры.
https://kotlinlang.ru/docs/reference/functions.html
Цитата:
Код:
fun reformat(str: String,
normalizeCase: Boolean = true,
upperCaseFirstLetter: Boolean = true,
divideByCamelHumps: Boolean = false,
wordSeparator: Char = ' ') {
...
}
С помощью именованных аргументов мы можем сделать код более читабельным:
Код:
reformat(str,
normalizeCase = true,
upperCaseFirstLetter = true,
divideByCamelHumps = false,
wordSeparator = '_'
)
Или, если нам не нужны все эти аргументы
Код:
reformat(str, wordSeparator = '_')
При вызове функции как с позиционными, так и с именованными аргументами все позиционные аргументы должны располагаться перед первым именованным аргументом. Например, вызов f(1, y = 2) разрешен, а f(x = 1, 2) - нет.
по-любому, в X++ нет ни пропертей, ни синтаксического сахара вокруг них.
поэтому конструктор с пустыми параметрами и кучей parm-методов в Аксапте скорее нонсенс.
хотя такая конструкция может появится в интеграционном фунционале.
parm-методы в Аксаптовском функционале допустимы если в классе есть большое число параметров, как
писал DSPIC.
если в классе есть обязательные параметры, то они должны присутствовать в конструкторе.
если класс написал в концепции иммутабельности, то параметры должны присутствовать в конструкторе.
Пример правильной реализации из ax2012 - метод AifWcfProcessor.createAifMessage()