据我所知Class
,Object
是参考类型。
我有以下方法来更改值
public void ChangeValue(MyClass classobj)
{
classobj.Number = classobj.Number*2;
}
我调用该方法将值加倍
var myClass=new MyClass();
int myNumber = 10;
myClass.Number = myNumber;
ChangeValue(myClass);
它将返回 20,这很好,因为您可以将其解释为当您创建类的对象然后它将引用传递给方法并更新引用值。
但我的问题是为什么它不会发生在 Object 类型中。换句话说,为什么当我制作对象并为其分配一些值时,如下所示
object myObject = new object();
string sometext = "Some object value";
myObject = sometext;
ChangeValue(myObject)
执行方法后它不会改变值
public void ChangeValue(object objectValue)
{
objectValue = null;
}
我知道方法的参数是值类型,但无法理解它对两种引用类型有不同的行为。