Table of Contents

NBMsgPack050: Use ref parameters for ref structs

It is critical for certain ref struct types defined in Nerdbank.MessagePack to be passed by ref when used as a parameter. Without this, a copy of the struct is made, and the buffers or position tracking fields that are modified by the callee will not apply back to the caller.

These types fall into this category:

Example violation

The following method is declared with one of the above types as a parameter type, but without using the ref modifier:

void SomeMethod(MessagePackReader reader)
{
}

Resolution

Add the ref modifier to the parameter (and all callers of the method):

void SomeMethod(ref MessagePackReader reader)
{
}