абстрактные методы базового класса. Это влияет не только на COM или P / Invoke.

T не имеетout параметры, но вы можете указать<Out()> ByRef на COM и P / Invoke методы, чтобы получить тот же эффект для внешних методов.

Помогает ли указание того же самого для внутренних методов (то есть методов, вызываемых только кодом .NET) на самом деле Jitter (или компилятор VB.NET)? Или это в настоящее время полезно только в качестве заметки программиста.

Возможно ли его использовать в будущем Jitter, или этот атрибут потерян при компиляции?

Ответы на вопрос(1)

Решение Вопроса

<Out()> действительно ли клиент C # требуетout аргументы, так что это, кажется, эффективно то же самое.

Также клиент C # передает свои аргументы с текущими значениями в метод, но это не удивительно, потому что, в отличие от случаев COM или P / Invoke, нет необходимости делать маршаллинг. (А C # не позволит установить свойствоout аргумент напрямую, поэтому, похоже, нет способа увидеть, оптимизирует ли C # предыдущее ненужное назначение.)

Таким образом, кажется, ответ заключается в том, что это помогает возможным будущим клиентам C # использовать код, и если джиттер когда-либо корректирует эквивалент C #, он будет делать то же самое здесь. Хотя такие языки, как VB, существуют, они не могут многое сделать, потому что не уважаютOut атрибут самих себя.

 Cody Gray♦11 авг. 2012 г., 09:17
Да, этоименно так тот же самый. C #out ключевое слово компилируется в код IL, который содержит<Out()> приписывать. В VB.NET просто нет ключевого слова. Вы можете убедиться в этом сами, скомпилировав два тестовых проекта и используя ILdasm для их сравнения.
 jswolf1903 июн. 2015 г., 04:32
Я предполагаю, что это относится к атрибуту Out в пространстве имен System.Runtime.InteropServices. Это тот случай?

Ваш ответ на вопрос