这是我的班级:
public class UserInformation
{
public string Username { get; set; }
public string ComputerName { get; set; }
public string Workgroup { get; set; }
public string OperatingSystem { get; set; }
public string Processor { get; set; }
public string RAM { get; set; }
public string IPAddress { get; set; }
public UserInformation GetUserInformation()
{
var CompleteInformation = new UserInformation();
GetPersonalDetails(ref CompleteInformation);
GetMachineDetails(ref CompleteInformation);
return CompleteInformation;
}
private void GetPersonalDetails(ref UserInformation CompleteInformation)
{
}
private void GetMachineDetails(ref UserInformation CompleteInformation)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我的印象是ref关键字告诉计算机使用相同的变量而不是创建一个新变量.
我正确使用它吗?我是否必须在调用代码行和实际方法实现上使用ref?
当您将引用类型(在您的情况下,您的UserInformation类是引用类型)作为参数传递时,默认情况下您将指针传递给类的值,这意味着GetPersonalDetails它将获得自己的指针副本,该指针指向相同的UserInformation班级的实例.
ref在示例中使用关键字会将指向UserInformation实例的相同指针传递给方法.
所以你的情况,如果你的目的是简单修改的属性UserInformation时,ref在不需要的关键字,因为你会被修改,从实际情况GetPersonalDetails和GetMachineDetails.但是,如果您的目的是UserInformation从这些方法中实例化一个新对象或将实例设置为null,则需要使用该ref关键字.