我们知道将对象传递给任何方法都是引用类型。那之间有什么区别 传递简单的对象并在方法中使用ref关键字传递对象?请回复正确的解释。
答案 0 :(得分:0)
如果您没有使用ref关键字传递对象,则按值传递对象引用。然而,在其他情况下,对象通过引用传递。您可以通过以下示例获得更好的解释。
示例:
private void button1_Click_2(object sender, EventArgs e)
{
Student s = new Student
{
FirstName = "Svetlana",
LastName = "Omelchenko",
Password = "hh",
modules = new string[] { "001", "002", "003", "004" }
};
SomeMethod(s);
Console.WriteLine(s.FirstName); //will output Svetlana
}
private void SomeMethod(Student s)
{
s = new Student();
s.FirstName = "New instance";
}
class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Password { get; set; }
public string[] modules { get; set; }
}
现在,如果你有这样的方法
private void SomeMethod(ref Student s)
{
s = new Student();
s.FirstName = "New instance";
}
然后输出将是新实例
答案 1 :(得分:0)
这已被多次询问过。使用SomeMethod(object obj)
时,引用将按值传递。因此,引用按值复制并提供给方法。对象本身不会被复制。这两个参考文献"指向"同一个对象。
使用SomeMethod(ref object obj)
引用传递引用类型。因此,该方法对对象使用相同的引用(不是对与by-value相同的对象的另一个引用)。
如果SomeMethod
代码分配给obj
参数,则差异很明显,例如
obj = "CHANGED!";
然后在方法返回后,调用者是否看到引用具有新值,取决于是否使用ref
。