Сообщение Re: lock(this) или нет? от 25.09.2016 20:58
Изменено 29.09.2016 20:46 VladD2
Здравствуйте, RQ, Вы писали:
RQ>Добрый день,
RQ>в продолжение этой темы lock(this) — почему плохо? появился дополнительный вопрос. На просторах интернета был найден пример (воспроизвожу по памяти, но вроде бы ничего не напутал):
RQ>
RQ>Вопросы:
RQ>1. lock(this.a) в данном случае эквивалентен lock(this) со всеми вытекающими последствиями?
RQ>2. на ваш взгляд имеет ли подобный вариант наследования право на жизнь — спрашиваю, потому что мне интуитивно не нравится такая конструкция, но сформулировать, что именно мне не нравится, я не могу.
RQ>PS продолжать тот топик не стал, вроде бы вопрос другого характера, если поступил не правильно извиняюсь.
This указывает на текущий экземпляр класса и не важно в коде базового класса или подкласса.
Выводит true.
RQ>Добрый день,
RQ>в продолжение этой темы lock(this) — почему плохо? появился дополнительный вопрос. На просторах интернета был найден пример (воспроизвожу по памяти, но вроде бы ничего не напутал):
RQ>
RQ>public class A : B
RQ>{
RQ> public IReadOnlyList<int> Foo { get; set;}
RQ> public int Bar { get; set; }
RQ> public A()
RQ> {
RQ> this.Init(this);
RQ> }
RQ>}
RQ>public abstract class B
RQ>{
RQ> private A a;
RQ> protected void Init(A a)
RQ> {
RQ> this.a = a;
RQ> }
RQ> public void Update(IEnumerable<int> foo, int bar)
RQ> {
RQ> lock(this.a)
RQ> {
RQ> this.a.Foo = foo;
RQ> this.a.Bar = bar;
RQ> }
RQ> }
RQ>}
RQ>RQ>Вопросы:
RQ>1. lock(this.a) в данном случае эквивалентен lock(this) со всеми вытекающими последствиями?
RQ>2. на ваш взгляд имеет ли подобный вариант наследования право на жизнь — спрашиваю, потому что мне интуитивно не нравится такая конструкция, но сформулировать, что именно мне не нравится, я не могу.
RQ>PS продолжать тот топик не стал, вроде бы вопрос другого характера, если поступил не правильно извиняюсь.
This указывает на текущий экземпляр класса и не важно в коде базового класса или подкласса.
protected void Init(A a)
{
Console.WriteLine(this==a);
this.a = a;
}Выводит true.
Re: lock(this) или нет?
Здравствуйте, RQ, Вы писали:
RQ>Вопросы:
RQ>1. lock(this.a) в данном случае эквивалентен lock(this) со всеми вытекающими последствиями?
RQ>2. на ваш взгляд имеет ли подобный вариант наследования право на жизнь — спрашиваю, потому что мне интуитивно не нравится такая конструкция, но сформулировать, что именно мне не нравится, я не могу.
RQ>PS продолжать тот топик не стал, вроде бы вопрос другого характера, если поступил не правильно извиняюсь.
This указывает на текущий экземпляр класса и не важно в коде базового класса или подкласса.
Выводит true.
RQ>Вопросы:
RQ>1. lock(this.a) в данном случае эквивалентен lock(this) со всеми вытекающими последствиями?
RQ>2. на ваш взгляд имеет ли подобный вариант наследования право на жизнь — спрашиваю, потому что мне интуитивно не нравится такая конструкция, но сформулировать, что именно мне не нравится, я не могу.
RQ>PS продолжать тот топик не стал, вроде бы вопрос другого характера, если поступил не правильно извиняюсь.
This указывает на текущий экземпляр класса и не важно в коде базового класса или подкласса.
protected void Init(A a)
{
Console.WriteLine(this==a);
this.a = a;
}Выводит true.