Если кто-то передает объект методу с использованием ключевого слова 'Ref', то в чем разница с его передачей без ключевого слова ref?Объекты C# по ссылке
Потому что оба дают тот же результат, что объект был изменен при передаче управления обратно вызывающему объекту.
Такие, как это:
class Student
{
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
}
class Program
{
static Student student = new Student();
static void Main(string[] args)
{
student.Age = 30;
student.Name = "StudentA";
Console.WriteLine("Original Student: {0}, Age: {1}", student.Name, student.Age);
SetStudent(ref student);
Console.WriteLine("Student by Ref {0}, Age{1}", student.Name, student.Age);
AnotherStudent(student);
Console.WriteLine("Just Another Student {0}, Age {1}", student.Name, student.Age);
Console.ReadLine();
}
public static void SetStudent(ref Student student)
{
student.Age = 16;
student.Name = "StudentY";
}
public static void AnotherStudent(Student studenta)
{
if (studenta.Equals(student))
{
Console.WriteLine("The same object in memory");
}
studenta.Age = 12;
studenta.Name = "StudentX";
}
}
Когда объект студент передается AnotherStudent() она будет изменена, событие думали, что это не прошло мимо «Ref».
Может кто-нибудь объяснить, что здесь происходит?
EDIT
Так что разница в передаче указателя на объект в C++ в функции?
Тони
И в чем разница с передачей указателя на объект в C++? –
Не могу конкурировать с * Пони * (я связываю его статью как ссылку), но у меня есть краткое сравнение с C++ в моем ответе. – JohnIdol