function compareArrays(arrayA, arrayB) {
if (arrayA.length != arrayB.length) return true;
for (i = 0; i < arrayA.length; i++)
if (arrayB.indexOf(arrayA[i]) == -1) {
return true;
}
}
for (i = 0; i < arrayB.length; i++) {
if (arrayA.indexOf(arrayB[i]) == -1) {
return true;
}
}
return false;
}
Вы не делаете ничего плохого. Согласно документация :
А энергозависимое поле не должно обычно передаваться с помощью касательно или параметр, так как это не будут рассматривать как энергозависимое в рамках функции. Существуют исключения к этому, такому, называя взаимно блокируемый API.
Вы получаете ошибку, потому что Вы передаете поле ссылкой. Я думаю, что это означает, то, что целевой метод понятия не имеет, что поле отмечено как volatile
, и поэтому не будет рассматривать его как таковой.
В основном предупреждение состоит в том, что при передаче энергозависимого поля ссылкой код вызова не знает для обработки ее энергозависимым способом. Для Взаимно блокируемого. Инкремент, который, вероятно, не имеет значения, из-за природы метода - но тогда Вам не нужна переменная, чтобы быть энергозависимы так или иначе , если Вы используете, Взаимно блокировался.
В целом, я думаю, что постарался бы не смешивать два - если Вы используете, Взаимно блокировался, сделайте это везде (использование Interlocked.CompareExchange(ref counter, 0, 0)
для чтения его). Я не могу сказать, что использую энергозависимый очень часто, лично. Для простых счетчиков I мог бы Взаимно блокируемое использование, но я, более вероятно, буду использовать блокировку для большинства задач.
Используйте это :
#pragma warning disable 420
// M
// dM
// MMr
// 4MMML .
// MMMMM. xf
// . "MMMMM .MM-
// Mh.. +MMMMMM .MMMM
// .MMM. .MMMMML. MMMMMh
// )MMMh. MMMMMM MMMMMMM
// 3MMMMx. 'MMMMMMf xnMMMMMM"
// '*MMMMM MMMMMM. nMMMMMMP"
// *MMMMMx "MMMMM\ .MMMMMMM=
// *MMMMMh "MMMMM" JMMMMMMP
// MMMMMM 3MMMM. dMMMMMM .
// MMMMMM "MMMM .MMMMM( .nnMP"
// =.. *MMMMx MMM" dMMMM" .nnMMMMM*
// "MMn... 'MMMMr 'MM MMM" .nMMMMMMM*"
// "4MMMMnn.. *MMM MM MMP" .dMMMMMMM""
// ^MMMMMMMMx. *ML "M .M* .MMMMMM**"
// *PMMMMMMhn. *x > M .MMMM**""
// ""**MMMMhx/.h/ .=*"
// .3P"%....
// nP" "*MMnx
if(Interlocked.CompareExchange(ref isLoaded, 1, 0) != 0)
return;
#pragma warning restore 420