MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Неясное поведение атрибута OptionalAttribute"
Answer 916655
Магия. В .NET есть два способа задания необязательных параметров:
Указывая значение по умолчанию средствами языка, например в C#
void Test(int x, int y, int z=0)
. При этом способе все необязательные параметры должны быть указаны в конце списка аргументов, это проверяется при компиляции метода.Способ с [Optional], который можно применять в любых языках, даже если они не поддерживают синтаксис значения по умолчанию. Значение по умолчанию будет Type.Missing. При данном способе можно указать необязательные аргументы до обязательных. Однако, пропустить эти аргументы можно будет только при использовании именованных аргументов (проверка осуществляется при компиляции вызова метода):
void Test([Optional] int x, int y, [Optional]int z) { Console.WriteLine("{0} {1} {2}", x, y, z); } Test(2); // => CS7036 Отсутствует аргумент, соответствующий требуемому формальному параметру "y" Test(y:2); // => 0 2 0
Ничего специфичного для COM Interop на этот раз вроде нет.
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.