Я сейчас смотрю на какой-то код на C#, и я хотел проверить, что я не схожу с ума в своем понимании того, как он должен работать.Почему ключевое слово «ref» используется с System.ServiceModel.Channels.Message?
Это связано с прохождением вокруг System.ServiceModel.Channels.Message. Каждый метод, который принимает объект Message имеет сигнатуру метода, похожее на это:
void SomeMethod(ref Message message) { ... }
То, что я не понимаю, почему «ссылка» ключевое слово там. Насколько я понимаю, если метод не собирается полностью заменить объект, тогда он не нужен.
void SomeMethod(ref Message message)
{
message = new Message();
}
Но если сообщение, например, только добавляет что-то еще к заголовкам, или просто считывает значение из объекта, то ключевое слово «ссылка» не нужна, как сообщение является ссылочным типом.
void SomeMethod(Message message)
{
message.Headers.Add("Some Data"); // This should be fine?
}
Приветствия
Согласитесь, что неясно, почему код принимает параметр 'ref'. Возможно, какой-то дополнительный контекст поможет. – Jon
Я боюсь, что это примерно столько, сколько у меня есть, я посмотрел документацию MS, и кажется, что каждый метод, который принимает объект этого типа, делает это с помощью ключевого слова «ref»? –