почему двунаправленный состав не подходит для передачи значения типа? - PullRequest
1 голос
/ 19 сентября 2011

У меня есть только 2 класса:

class A 
{
   public B b = new B();    
   public bool flag {get; set;}
}

class B
{
  public void foo()
  {
   //iterates a dataTable with column "someBoolCondition"
   // I want to set A's bool to true, after the first record that has 'true' in column
   //"someBoolCondition". Thus is thought to avoid bool memebers in each class.
  }
}

Моя идея не была настолько хороша, так как bool имеет тип значения: Я думаю, что это проблема, потому что я вижу строку "ReferenceToA.flag= правда; "выполняется, но позже я не вижу, чтобы флаг А превращался в true (остается ложным).Почему это так?

   class A 
    {
       public bool flag {get; set;}

       public B b = new B();
       b.ReferenceToA = this;
    }

    class B
    {    
        public A ReferenceToA {get; set} 
        public void foo()
         {
           ReferenceToA.flag = true; //...
         }
    }

Есть ли элегантный способ сделать это так же, как для элемента ссылочного типа?Это избыточное убийство и должно быть сделано по-другому?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2011

Это определенно не излишество. Может быть, есть и другие способы добиться того, что вы здесь делаете, но выбор того или другого зависит от требований вашего проекта. Для меня это абсолютно нормально.

Для упрощения вы можете подумать о создании логического свойства static, чтобы вы могли получить к нему доступ непосредственно из класса B A.flag. Но мне трудно сказать, если это действительно подходящее решение для вас, просто прочитав ваш пост.

0 голосов
/ 19 сентября 2011

Ваш шаблон на самом деле не хуже при передаче bool по сравнению с любым типом ссылки - он точно такой же.

Действительно, размер ссылки (который передается по значению) составляет 32 или 64 бита.Это также размер bool.

...