检索在另一个 class 中设置的值
Retrieving a value in one class that is set in another
希望你们一切都好。
我在大学的任务中遇到了一个小问题,我在一个名为 Alpha 的 class 中有一个变量,我想在其中更改值到用户输入的内容。对于名为 Charlie 的第二个 class,我想使用用户输入的相同值。我理解为什么我的工作不起作用,但我不知道我是否缺少使其工作的基本要素。
这只是玩具代码,并不是我的实际工作,但是,这准确反映了我遇到的问题。
class Alpha
{
public string message = "hello.";
public void Bravo()
{
Charlie charlie = new Charlie();
Console.WriteLine("Enter message here:");
message = Console.ReadLine();
Console.WriteLine("Alpha() says, " + message + ".");
charlie.Delta();
}
}
class Charlie
{
public void Delta()
{
Alpha alpha = new Alpha();
Console.WriteLine("Charlie() says, " + alpha.message);
}
}
class Program
{
static void Main(string[] args)
{
Alpha alpha = new Alpha();
alpha.Bravo();
}
}
您需要将 alpha 实例传递给 charlie
charlie.Delta(this);
和
public void Delta(Alpha alpha)
{
Console.WriteLine("Charlie() says, " + alpha.message);
}
这是因为您可以有多个不同的 alpha 和不同的消息。在您当前的代码中,您创建了一个与调用 charlie.delta.
无关的新 alpha
另一种可能是静态数据。在这种情况下,它只出现一次
class Alpha
{
public static string message = "hello.";
.....
public void Bravo()
{
Charlie charlie = new Charlie();
Console.WriteLine("Enter message here:");
Alpha.message = Console.ReadLine();
Console.WriteLine("Alpha() says, " + message + ".");
charlie.Delta();
}
}
和
public void Delta()
{
Console.WriteLine("Charlie() says, " + Alpha.message);
}
您还可以在第三个 class 中提取 read/write 消息的代码,并将其作为依赖项传递给 Alpha 和 查理.
class Message
{
private string _message = "hello.";
public void Read()
{
Console.WriteLine("Enter message here:");
_message = Console.ReadLine();
}
public void Write(string from)
{
Console.WriteLine($"{from}() says ,{_message}");
}
}
然后像这样更新其余部分:
class Alpha
{
private readonly Message _message;
private readonly Charlie _charlie;
public Alpha(Message message)
{
_message = message;
_charlie = new Charlie(message);
}
public void Bravo()
{
_message.Write(nameof(Alpha));
_charlie.Delta();
}
}
class Charlie
{
private readonly Message _message;
public Charlie(Message message)
{
_message = message;
}
public void Delta()
{
_message.Write(nameof(Charlie));
}
}
class Program
{
static void Main(string[] args)
{
Message message = new Message();
message.Read();
Alpha alpha = new Alpha(message);
alpha.Bravo();
}
}
希望你们一切都好。
我在大学的任务中遇到了一个小问题,我在一个名为 Alpha 的 class 中有一个变量,我想在其中更改值到用户输入的内容。对于名为 Charlie 的第二个 class,我想使用用户输入的相同值。我理解为什么我的工作不起作用,但我不知道我是否缺少使其工作的基本要素。
这只是玩具代码,并不是我的实际工作,但是,这准确反映了我遇到的问题。
class Alpha
{
public string message = "hello.";
public void Bravo()
{
Charlie charlie = new Charlie();
Console.WriteLine("Enter message here:");
message = Console.ReadLine();
Console.WriteLine("Alpha() says, " + message + ".");
charlie.Delta();
}
}
class Charlie
{
public void Delta()
{
Alpha alpha = new Alpha();
Console.WriteLine("Charlie() says, " + alpha.message);
}
}
class Program
{
static void Main(string[] args)
{
Alpha alpha = new Alpha();
alpha.Bravo();
}
}
您需要将 alpha 实例传递给 charlie
charlie.Delta(this);
和
public void Delta(Alpha alpha)
{
Console.WriteLine("Charlie() says, " + alpha.message);
}
这是因为您可以有多个不同的 alpha 和不同的消息。在您当前的代码中,您创建了一个与调用 charlie.delta.
无关的新 alpha另一种可能是静态数据。在这种情况下,它只出现一次
class Alpha
{
public static string message = "hello.";
.....
public void Bravo()
{
Charlie charlie = new Charlie();
Console.WriteLine("Enter message here:");
Alpha.message = Console.ReadLine();
Console.WriteLine("Alpha() says, " + message + ".");
charlie.Delta();
}
}
和
public void Delta()
{
Console.WriteLine("Charlie() says, " + Alpha.message);
}
您还可以在第三个 class 中提取 read/write 消息的代码,并将其作为依赖项传递给 Alpha 和 查理.
class Message
{
private string _message = "hello.";
public void Read()
{
Console.WriteLine("Enter message here:");
_message = Console.ReadLine();
}
public void Write(string from)
{
Console.WriteLine($"{from}() says ,{_message}");
}
}
然后像这样更新其余部分:
class Alpha
{
private readonly Message _message;
private readonly Charlie _charlie;
public Alpha(Message message)
{
_message = message;
_charlie = new Charlie(message);
}
public void Bravo()
{
_message.Write(nameof(Alpha));
_charlie.Delta();
}
}
class Charlie
{
private readonly Message _message;
public Charlie(Message message)
{
_message = message;
}
public void Delta()
{
_message.Write(nameof(Charlie));
}
}
class Program
{
static void Main(string[] args)
{
Message message = new Message();
message.Read();
Alpha alpha = new Alpha(message);
alpha.Bravo();
}
}