Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#给出一个构造函数的内部值_C#_Object_Constructor - Fatal编程技术网

C#给出一个构造函数的内部值

C#给出一个构造函数的内部值,c#,object,constructor,C#,Object,Constructor,我试图给一个类一个无法控制它的对象。这意味着如果主类更改了对象,我创建的类也会更改 例如: class main { private string test; public main() { var Test = new Test(test); } } 如果我现在更改字符串“test”,那么对象测试也应该看到更改字符串。这可能吗?如果您使用特制的类而不是字符串,则可以执行以下操作: public class SharedData { public s

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

例如:

class main
{
   private string test;

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

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

如果您使用特制的类而不是字符串,则可以执行以下操作:

public class SharedData
{
   public string Test {get;set;}
}
然后,如果您有一个类型为
SharedData
而不是string的对象,它们将共享该值。字符串在C#中是不可变的,因此两个类中不会有相同的字符串引用

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

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

另外,这是不是一个好的设计是另一个问题。根据你提供的例子很难回答。如果可能的话,我会避免这样的设计,而是将字符串作为参数传递给需要它具有较少状态的地方。但是,它总是取决于你所做的事情是有益的,但是你可以考虑改变设计以使它更容易。

如果你不是使用一个特别精心制作的类:

,就有可能做。
public class SharedData
{
   public string Test {get;set;}
}
然后,如果您有一个类型为
SharedData
而不是string的对象,它们将共享该值。字符串在C#中是不可变的,因此两个类中不会有相同的字符串引用

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

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

另外,这是不是一个好的设计是另一个问题。根据你提供的例子很难回答。如果可能的话,我会避免这样的设计,而是将字符串作为参数传递给需要它具有较少状态的地方。但是,它总是取决于你可以做哪些事情是有益的,但是你可以考虑改变设计以使它更容易。

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