2010-08-05 2 views
1

Я читал Linq to Sql. Здесь я создал файл DBML, где я обнаружил, что автоматически генерируемый свойство было созданоПочему Linq to Sql использовали эту строку при создании свойства

[Column(Storage="_RecursionLevel", DbType="Int")] 
public System.Nullable<int> RecursionLevel 
{ 
    get 
    { 
     return this._RecursionLevel; 
    } 
    set 
    { 
     if ((this._RecursionLevel != value)) 
     { 
      this._RecursionLevel = value; 
     } 
    } 
} 

Вот почему if ((this._RecursionLevel != value)) пишется строка. В чем цель. Почему бы прямо не присвоить значение. Какую пользу они получили

ответ

2

Сборщик мусора отслеживает области памяти, которые записываются с момента последнего GC. Если регион не написан, сборщик мусора может пропустить много проверок.

Простое назначение, отмечает, что память является грязной, даже если записанная память содержит одно и то же значение.

Check this article. Читайте в статье «Создание поколений с барьерами записи» и «Слишком много объектов».

0

Обычно с классами linq to sql (или, по крайней мере, когда я использовал их) также происходит событие propertynotification. Sooo Я предполагаю, что линия, уволяющая событие, отсутствует.

Потому что, если значение не было изменено, не нужно его менять и, следовательно, не нужно запускать это событие.

0

Это в основном проверка того, отличается ли значение, которое вы пытаетесь присвоить этому свойству, отличное от того, что оно в настоящее время. Затем будет выполняться только назначение, если значение отличается. Предположительно, это оптимизация, которая экономит ненужные присваивания, когда они одинаковы, и не прекращайте никаких событий «OnChange», не повод для веских причин.

+0

townsean: Значит, это означает, что для сохранения ненужного события эта проверка была использована. Предполагая, что не было никакого события, это была оптимизация. Какова более экспансивная работа между ними. Назначение или проверка –

+1

Это хороший вопрос. Я не уверен, что дороже, но меня интересует ответ на этот вопрос. –

Смежные вопросы