Может быть, когда у вас есть структура (которая является типом значения):
struct Foo
{
int i;
public void Test()
{
i++;
}
}
static void update(ref Foo foo)
{
foo.Test();
}
и
Foo b = new Foo();
update(ref b);
Здесь вы можете использовать два параметра с out
, например:
static void update(Foo foo, out Foo outFoo) //Yes I know you could return one foo instead of a out but look below
{
foo.Test();
outFoo = foo;
}
отображая метод, имеющий более одного Foo
, тогда вы получите удвоенные параметры с out
против ref
.Альтернативой является возврат N-кортежа.У меня нет реального примера того, когда использовать этот материал.
Добавление: Различные .TryParse
методы также могли бы избежать out
, если бы они вернули Nullable<T>
вместо этого, который по сути является кортежем boolean * T
.