gpt4 book ai didi

c# - 这个函数如何改变我的只读变量?

转载 作者:太空狗 更新时间:2023-10-30 00:08:30 26 4
gpt4 key购买 nike

我在 C# 中使用 jabber.net,有一个怪癖让我感到困惑,所以希望有人能解释它是如何做到的。我从 C++ 的背景开始对 C# 还是很陌生,所以这可能是一个误解

我正在创建一个只读 JID 来保存我需要进入的房间:

private readonly JID messagingRoomJID;

public MyClass
{
// Reads from database but for purpose of this question
messagingRoomJID = new JID("user@myserver");
}

稍后我想加入一个房间,在那里我得到了让我感到困惑的东西

conferenceManager = new ConferenceManager();
conferenceManager.Stream = xmppClient;

// Before entering this room messagingRoomJID.Resource == null
theRoom = conferenceManager.GetRoom(messagingRoomJID);
// But now messagingRoomJID.Resource contains my username

但是 Resource 是如何改变的呢?该变量是只读的,但也不应通过 const 引用传递,那么它是如何更新的呢?

看起来我可以这样做,但我不确定它是否明智:

theRoom = conferenceManager.GetRoom(new JID(messagingRoomJID));

最佳答案

它不会改变变量的值。您的变量值只是一个引用。该引用与之前保持不变。

发生变化的是引用引用的对象中的数据。 readonly 修饰符 only 适用于您的变量 - 它没有说明对象本身的可变性。

区分引用和对象非常重要 - 请参阅 my article on the topic获取更多信息。

关于c# - 这个函数如何改变我的只读变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7818685/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com