gpt4 book ai didi

c# - 引用另一个类(class)成员

转载 作者:行者123 更新时间:2023-11-30 15:56:11 30 4
gpt4 key购买 nike

我有三个类(DataFirstSecond)。

我正在 First 中创建 Data 的成员,并尝试使用以下内容将其传递给 Second:

public class First
{
public Data DataMember;
Second SecondMember;

void First_Function()
{
SecondMember.Second_Function(ref DataMember);
}
}

public class Second
{
Data DataMember;

public void Second_Function(ref Data data)
{

}
}

有没有办法访问 Second.Data 成员中的 First.Data 成员?

Second.Second_Function() 中使用 ref 允许我访问 First 的成员,但只能在 Second_Function 内部()

我想要 Second 中的另一个函数来访问它,它与 Second_Function() 具有不同的“回调时间”。

编辑:

我的问题不是关于引用类型和值类型之间的区别。

如果我对 int 变量使用 ref 关键字,这意味着如果我用另一个值替换它,它将影响原始值。

在类里面,当我对同一个实例有两个变量引用时,如果我编辑其中一个,我会影响另一个,那是因为它们引用相同的东西,我想知道 C# 中是否有办法替换其中一个变量,并使另一个变量随之改变。

最佳答案

There are two kinds of types in C#: reference types and value types. Variables of reference types store references to their data (objects), while variables of value types directly contain their data. With reference types, two variables can reference the same object; therefore, operations on one variable can affect the object referenced by the other variable. With value types, each variable has its own copy of the data, and it is not possible for operations on one variable to affect the other (except in the case of ref and out parameter variables, for more details see here

举个例子:

解释

  1. 将您的数据对象作为构造函数中的参数传递给类FirstSecond
  2. FirstSecond 中的数据对象发生的任何更新都将反射(reflect)在这些类之外的数据对象上,因为它是引用类型

    公共(public)类数据{ 公共(public)数据(整数值) { 这个。值(value)=值(value); } 公共(public) int 值{get;设置;}

    公共(public)课第一{ 私有(private)数据 m_data; public First(数据数据) { m_data = 数据; } public void Add(int 值) { 如果(m_data!=空) m_data.Value+=值; }

    公开课二{ 私有(private)数据 m_data; public Second(数据数据) { m_data = 数据; } public void Multiply(int 值) { 如果(m_data!=空) m_data.Value*=值; }

现在让我们设置这个场景

var data = new Data(10);
var first = new First(data);
var second = new Second(data);
second.Multiply(5);
first.Add(10);

您期望类数据中的值是什么? 10?你错了,这个值是60

这里是工作 demo

希望对你有帮助

关于c# - 引用另一个类(class)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47435578/

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