【发布时间】:2019-11-20 04:33:58
【问题描述】:
在下面的代码中,我希望将 classA 和 Main 都归结为 Main 的名字是“GoodBye” 但是,最后,classA 仍然是 Main 的名字是 'Hello' 而 Main 知道它的名字有已更改为“再见”。如何让 classA 看到 Main 的名称已更改为 GoodBye?
这在 C# 中是不允许的并且被认为是不安全的,因此您必须将代码包装在“不安全”块中吗?
经过测试,我了解到使用引用允许 classA 修改 Main 的名称,但不允许 classA 查看 Main 的名称何时更改。
class Program
{
static void Main(string[] args)
{
string MyName = "Hello";
Console.WriteLine($"Main thinks Main's name is: {MyName}");
Console.WriteLine($"");
Console.WriteLine($"Creating ClassA");
ClassA classA = new ClassA(ref MyName);
Console.WriteLine($"Main thinks Main's name is: {MyName}");
classA.WriteOutMainName();
MyName = "GoodBye";
Console.WriteLine($"");
Console.WriteLine($"Main changed it's name to: {MyName}");
Console.WriteLine($"");
Console.WriteLine($"Main thinks Main's name is: {MyName}");
classA.WriteOutMainName();
}
}
public class ClassA
{
string MainName;
public ClassA(ref string mainName)
{
MainName = mainName;
mainName = "Dog";
}
public void WriteOutMainName()
{
Console.WriteLine($"ClassA thinks Main's name is: {MainName}");
}
}
上面的输出如下:
Main thinks Main's name is: hello Creating ClassA Main thinks Main's name is: hello ClassA thinks Main's name is: hello Main changed it's name to: GoodBye Main thinks Main's name is: GoodBye ClassA thinks Main's name is: hello Press any key to continue . . .
【问题讨论】:
-
创建一个类,给它一个
Name属性,然后将该类的一个实例传递给您的ClassA。瞧,ClassA现在有了对名称所有者的引用,并且可以随时获取它的名称。 -
嗨,艾米,效果很好。如果您重申您的评论作为答案,我可以将其标记为解决方案。谢谢。
-
欢迎回答。您已经在问题中这样做了,只需将其移至答案中即可。