【发布时间】:2012-05-01 03:32:30
【问题描述】:
我目前正在查看一些 C# 代码,我想检查一下我对它应该如何工作的理解并没有发疯。
这与传递 System.ServiceModel.Channels.Message 有关。每个接受 Message 对象的方法都有一个类似这样的方法签名:
void SomeMethod(ref Message message) { ... }
我不明白为什么“ref”关键字在那里。据我了解,如果该方法不能完全替换对象,则不需要。
void SomeMethod(ref Message message)
{
message = new Message();
}
但是,例如,如果消息只是将其他内容添加到标头中,或者只是从对象中读取值,则不需要“ref”关键字,因为 Message 是引用类型。
void SomeMethod(Message message)
{
message.Headers.Add("Some Data"); // This should be fine?
}
干杯
【问题讨论】:
-
同意代码采用
ref参数的原因并不明显。也许一些额外的上下文会有所帮助。 -
恐怕这就是我所拥有的,我查看了 MS 文档,似乎每个采用这种类型对象的方法都使用“ref”关键字?
标签: c# pass-by-reference ref