Hung Manh Tran Hung Manh Tran - 2 months ago 11
C# Question

Usage of [in, out] in methods

I want to ask if there is some difference between

public int Method1([In, Out] byte[] buffer);


and

public int Method2(byte[] buffer);


I came across http://referencesource.microsoft.com/#mscorlib/system/io/stream.cs,739 and wonder why
[In, Out]
is there?

Answer

Yes. There are differences.

  • public int Method2(byte[] buffer); uses implicit In:

    Indicates that data should be marshaled from the caller to the callee, but not back to the caller.

  • public int Method2(out byte[] buffer); uses Out:

    Indicates that data should be marshaled from callee back to caller.

  • public int Method2(ref byte[] buffer); uses [In, Out].
Comments