Может и глупый вопрос, но всё же есть ли какая-то разница в использовании ref/out параметров, если параметр ссылочного и структурного типа?
Вопрос вовсе не глупый, просто нужно рассмотреть немного с другой стороны.
При применении ref/out к параметрам структурных и ссылочных типов разницы нет, но разница есть когда не используются ref/out с параметры. Например есть следующий код:
class MyClass
{
public int field = 0;
}
struct MyStruct
{
public int a;
}
class Program
{
public static void Method(MyClass a, MyStruct b)
{
a.field = 1;
b.a = 1;
a = null;
}
static void Main(string[] args)
{
MyClass myClass = new MyClass();
MyStruct myStruct = new MyStruct();
myStruct.a = 100;
Method(myClass, myStruct);
Console.WriteLine(myClass.field);
Console.WriteLine( myStruct.a);
if (myClass == null)
{
Console.WriteLine("Null");
}
else
{
Console.WriteLine("NotNull");
}
Console.ReadKey();
}
}
результатом его работы будет следующее:
Для структуры значение поля не изменилось, а для класса изменения внесённые в методе были сделаны и для изначального экземпляра (но ссылка занулилась только для переменной a
в методе Method
)
Спасибо! Всё стало намного ясней)