Я думал, что понял разницу, но теперь я не так уверен. Я читал технический ответ несколько раз, но не понимаю, что происходит. У меня есть такой пример.
class Program
{
static void Main()
{
int val = 0;
Example1(val);
Console.WriteLine(val); // Still 0!
Example2(ref val);
Console.WriteLine(val); // Now 2!
Example3(out val);
Console.WriteLine(val); // Now 3!
}
static void Example1(int value)
{
value = 1;
}
static void Example2(ref int value)
{
value = 2;
}
static void Example3(out int value)
{
value = 3;
}
}
Я всегда думал, что разница между параметрами по умолчанию заключается в том, что если я передаю val в Example1, я не могу использовать присваивание.
Но с ключевым словом ref значение val по-прежнему равно 0, но я создал ссылку, которая теперь обрабатывается как переменная "значение" в Example2 (ref val). Я пока что на чем-то зациклился? если бы я использовал
int value = 0;
Example1(value);
Console.WriteLine(value); // this would then return 1 correct?
Итак, что происходит с ключевым словом out? То же, что и ref?
ref
илиout
не используется? - person John Saunders   schedule 25.05.2015Main
функции в первом блоке кода. - person Blorgbeard   schedule 25.05.2015int
) и передачей ссылочного типа (например, экземпляра класса) вещи немного отличаются. - person John Saunders   schedule 25.05.2015public void Method(int val = 1)
, где вам не нужно передаватьval
, если вы хотите передать1
. - person John Saunders   schedule 25.05.2015