[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]
Indicates that data should be marshaled from callee back to caller.
Assembly: mscorlib (in mscorlib.dll)
<AttributeUsageAttribute(AttributeTargets.Parameter, Inherited := False)> _ Public NotInheritable Class OutAttribute _ Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Parameter, Inherited = false)] public sealed class OutAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Parameter, Inherited = false)] public ref class OutAttribute sealed : public Attribute
[<Sealed>] [<AttributeUsageAttribute(AttributeTargets.Parameter, Inherited = false)>] type OutAttribute = class inherit Attribute end
public final class OutAttribute extends Attribute
Thetype exposes the following members.
|Equals(Object)||Determines whether the specified Object is equal to the current Object. (Inherited from Object.)|
|GetHashCode||Serves as a hash function for a particular type. (Inherited from Object.)|
|GetType||Gets the Type of the current instance. (Inherited from Object.)|
|ToString||Returns a string that represents the current object. (Inherited from Object.)|
You can apply this attribute to parameters.
The is optional. The attribute is supported for COM interop and platform invoke only. In the absence of explicit settings, the interop marshaler assumes rules based on the parameter type, whether the parameter is passed by reference or by value, and whether the type is blittable or non-blittable. For example, the StringBuilder class is always assumed to be In/Out and an array of strings passed by value is assumed to be In.
Out-only behavior is never a default marshaling behavior for parameters. You can apply the to value and reference types passed by reference to change In/Out behavior to Out-only behavior, which is equivalent to using the out keyword in C#. For example, arrays passed by value, marshaled as In-only parameters by default, can be changed to Out-only. However, the behavior does not always provide expected semantics when the types include all-blittable elements or fields because the interop marshaler uses pinning. If you do not care about passing data into the callee, Out-only marshaling can provide better performance for non-blittable types.