c# - 我应该如何将对象的引用传递给同一类的另一个对象?
问题描述
public Class A
{
public string Name { get; set; }
}
public Class B
{
A obj1 = new A();
obj.Name = "ABCDEFGH";
}
public Class C
{
A obj2 = ...
}
我应该如何将 obj1 的引用传递给 obj2。这样在这种情况下,像 Name 这样的 obj1 的所有数据也可以在这里访问吗?
解决方案
你可以这样做:
public class B
{
A obj1 = new A();
public void Foo()
{
A obj1 = new A();
obj1.Name = "ABCDEFGH";
C c = new C(obj1);
}
}
public class C
{
A obj2;
// Constructor is called when created
public C(A a) => obj2 = a; // obj2 will now have the same reference
}
这称为依赖注入。new
每当我们使用关键字时都会调用构造函数。当我们这样做时,我们必须传递对A
.
现在,两者obj2
和都obj1
指向相同的实例,A
如果Name
再次更改,则两个类都将观察到该更改。
请记住,所有类实例可能C
不共享相同的obj2
. 这将取决于它们在构造函数中给出的内容。
推荐阅读
- google-apps-script - Google Script onChange 触发器在未进行任何更改时执行(一夜之间)
- eclipse-che - 在 kubernetes 集群(不是 minikube)上部署 Eclipse Che v7
- ruby - 如果哈希数组具有属性/值对,我如何编写 rspec 测试
- python - 如果包含某些单词,则提取 html 表中的文本
- c# - Oracle 编号映射 (ODP.NET)
- rest - 如何将 api body x-www-form-urlencoded 转换为原始纯文本/文本
- vue.js - TypeError:无法读取未定义的属性“缓存”-VueJS
- mysql - 如何在 MYSQL 数据库 varchar() 表列中搜索是否存在任何“关键字”字符串列表?
- angular - 嵌套 Angular Material 自定义组件主题
- sql - 我试图找到平均值大于 x 的分组类别