c# - 如何在 c# 中引用特定实例?
问题描述
对象引用如何在 c# 中工作 - 我试过这个,我目前正在尝试让一个对象引用另一个对象实例。
我正在建设的课程中需要这个
public class TransactionalProducer
{
private readonly IMessageBusProducer producer;
public TransactionalProducer (IMessageBusProducer bus, bool hasTransactionInitialized)
{
producer = bus;
if(hasTransactionInitialized)
{
producer.InitTransactions();
}
producer.BeginTransaction();
}
}
看起来当我创建一个新实例时TransactionalProducer
,producer
实例将被设置为一个新实例,其中的值取自函数参数bus
,而不是通过构造函数解析的引用。
如何确保TransactionalProducer
通过构造函数实例化新对象 时将public TransactionalProducer (IMessageBusProducer bus, bool hasTransactionInitialized)
其producer
设置为对的对象引用,而不是使用与函数参数相同的参数bus
创建新对象IMessageBusProducer
bus
解决方案
字符串对象是不可变的:它们在创建后无法更改。b = "let me rewrite this" 在 hip 中创建了一个新对象并将该对象的地址分配给 b。c 仍然有旧对象的地址。
如果要绑定两个变量,请尝试使用引用。
string b = "This is changed";
ref string c = ref b;
Console.WriteLine(c);
b = "let me rewrite this";
Console.WriteLine(c);
b = "let me rewrite this again";
Console.WriteLine(c);
c = "let me reverse";
Console.WriteLine(b);
Console.WriteLine(c);
输出
This is changed
let me rewrite this
let me rewrite this again
let me reverse
let me reverse
我不明白要达到什么目标,但试试这个,它可能对你有用。
public TransactionalProducer (ref IMessageBusProducer bus, bool hasTransactionInitialized)
它会到达您的内部总线生产者,但我不确定它是否会导致内存泄漏。
推荐阅读
- android - 如何在 jsoup 的 ui li 标签中获取文本?
- javascript - 遍历段落数组并从 JavaScript 中的另一个数组添加内容
- javascript - 当我使用 db.Entry(x).State = EntityState.Modified; 时,Json 结果不起作用
- project-reactor - 迭代一个Flux,里面执行一个Mono,下一步使用结果
- swift - 麦克风在 iOS 13 上无法与 CallKit VoIP 通话一起使用
- java - 我们如何将 tensorflow 2.x 模型导入 Java?
- extjs - ExtJS 存储到 POST、GET、PUT 和 DELETE
- sql - 如何旋转/旋转具有任意列数的多个 SQL 表?
- linux - eclipse 文件搜索:如何在非项目文件夹中的工作区中搜索
- python - 处理“在回滚无效事务之前无法重新连接”