【问题标题】:C# Give an constructor internal valueC# 给构造函数内部值
【发布时间】:2018-03-07 16:59:35
【问题描述】:

我试图给一个类一个无法控制它的对象。这意味着如果主类更改了对象,我创建的类也会发生更改。

例子:

class main
{
   private string test;

   public main()
   {
      var Test = new Test(test);
   }
}

如果我现在更改字符串“test”,对象 Test 也应该会看到更改字符串。这可能吗?

【问题讨论】:

  • 你期待什么??????
  • 将事件添加到测试字符串的setter,并在测试对象中订阅以在引发时更新。
  • 这听起来不像是一个好的设计。你想做什么

标签: c# object constructor


【解决方案1】:

如果您使用特制的类而不是字符串,则可以这样做:

public class SharedData
{
   public string Test {get;set;}
}

如果你有一个SharedData 类型的对象而不是字符串,它们将共享该值。字符串在 C# 中是不可变的,因此您不会在两个类中拥有相同的字符串引用。

class main
{
   private SharedData test = new ShareData();

   public main()
   {
      var Test = new Test(test);
   }
}

附:这是否是一个好的设计,这是一个不同的问题。根据您提供的示例很难回答。如果可能的话,我会避免这种设计,而是将字符串作为参数传递给你需要它来减少状态的地方。但与往常一样,这取决于您所做的事情可能是有益的,但您可以考虑更改设计以使其更容易。

【讨论】:

    猜你喜欢
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    相关资源
    最近更新 更多