【发布时间】:2013-08-07 08:11:32
【问题描述】:
以一个简单的方法为例:
public string GetDisplayName(string username, IUserService UserService)
{
var user = UserService.GetUserByUsername(username);
return string.Format("{0} {1} {2} ({3})", user.Title, user.FirstName, user.LastName, username);
}
所以 UserService 是一个类,根据 C# 的定义,一个类是一个引用类型。
如果我要执行以下操作:
public string GetDisplayName(string username, ref IUserService UserService)
{
var user = UserService.GetUserByUsername(username);
return string.Format("{0} {1} {2} ({3})", user.Title, user.FirstName, user.LastName, username);
}
这里的主要区别是什么?
【问题讨论】:
-
ByRef 只指向对象(例如,当您想要填充属性时,在 subs 中非常有用),ByVal 复制对象,使其成为对象的新实例。