c# - 如何更新通过引用方法传递的通用列表?

标签 c# generics

我有一个通用消息列表,我通过引用将其传递给方法。 该方法使用列表中的消息之一并更新该消息。

通过引用传递整个列表时,如何使用新文本更新此消息?

例如

private int RetrieveAndProcessQueueEntityRows(
        string sEntityCode,
        string sMessageFIDs,
        int iNumberToFetch,
        ref List<Entity> oMessageList) {

////......

Message currMessage = null;

foreach (Message oMessage in oMessageList) {
     if (oMessage.Message_UID == oPatientInfoEntityCurrent.MessageFID) {
        currMessage = oMessage;
        break;
     }
}

现在我可以使用 currMessage 对象来执行所需的更新。但是我如何更新 List<Entity> oMessageListcurrMessage

感谢您的帮助! - 拉库斯

最佳答案

如果消息是一个类,则不需要通过引用传递任何它;您只需更新现有的消息对象,或创建一个新的消息对象并将其在列表中交换(通过索引器,或使用删除/添加)。

如果您要创建新列表,则只需要 ref

因此,如果 Message 是一个可变类,则:

currMessage.SomeProperty = "some value"; // done

如果没有,请使用oMessageList的索引器(或者,如所述添加/删除) - 即

oMessageList[index] = replacementMessage;

请注意,如果您在 foreach 期间更改列表内容,foreach 迭代器几乎肯定会中断;有很多方法可以处理这个问题,但如果可以的话:只需更新消息本身的属性。

关于c# - 如何更新通过引用方法传递的通用列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/435557/

相关文章:

正则表达式替换的 C# 美元问题

c# - Web 客户端异常 : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel

c# - 体系结构层图验证在 .Net 核心中不起作用

.net - Paramarrays 的通用 Concat 扩展方法不适用于 IEnumerable(of String)

Java 泛型 - 冗余类型初始化

java - 为什么我不能使用泛型类型来实现非泛型签名

c# - GetBytes() 只能在二进制或 GUID 列上调用

c# - 如何以编程方式禁用 Windows 10 平板电脑屏幕的边缘滑动手势?

java - 使用泛型和反射的单例工厂

java - 带菱形运算符的通配符