C# 在另一个类函数中访问对象的属性
嘿,stackoverflow用户 有一个快速的 我试图在另一个类函数中访问对象的属性,但似乎无法使其工作C# 在另一个类函数中访问对象的属性,c#,object,C#,Object,嘿,stackoverflow用户 有一个快速的 我试图在另一个类函数中访问对象的属性,但似乎无法使其工作 class Program { static void Main(string[] args) { User PIE = new User(); Userchanger changer = new Userchanger(); changer.ChangeToFailedUser(PIE); //this won't work
class Program
{
static void Main(string[] args)
{
User PIE = new User();
Userchanger changer = new Userchanger();
changer.ChangeToFailedUser(PIE); //this won't work - The best overloaded method match for 'ConsoleApplication1.Userchanger.ChangeToFailedUser(ref object)' has some invalid arguments
}
}
public class User
{
public string Username = "Firstname.Lastname";
}
public class Userchanger
{
public void ChangeToFailedUser (ref object PIE)
{
object PIEThingy = PIE;
PIEThingy.Username = "AnotherFN.AnotherLN"; //So how do I actually access the object User's Username string variable? It's more important that I can GET the variable rather than edit it.
}
}
当您将参数作为ref参数传递时,应该添加一个
ref
关键字
看
要使用ref参数,方法定义和调用方法都必须显式使用ref关键字,如下例所示
并且对象
类不包含用户名
属性。要访问您的属性,您应该使用强制转换
,或者使用as
操作符以避免无效强制转换
User PIEThingy = PIE as User;
if(PIEThingy != null) PIEThingy.Username = "AnotherFN.AnotherLN";
您不必使用
ref
来更新类实例。默认情况下,它是通过引用传递的
只需将方法上的签名更改为接受用户
,而不是ref对象
public class Userchanger
{
public void ChangeToFailedUser (User PIE)
{
PIE.Username = "AnotherFN.AnotherLN";
}
}
另一方面,诸如
int
之类的基本类型是按值传递的。您可以使用ref
关键字指定您对传入参数所做的任何更改也会对调用方法中的变量所做的更改。您已经在User
类中创建了属性,为什么希望在对象的实例中使用该属性。另外,默认情况下,类的实例是通过引用传递的,因此不需要ref
public class Userchanger
{
public void ChangeToFailedUser (User PIE)
{
PIE.Username = "AnotherFN.AnotherLN";
}
}