Я пытаюсь использовать условие if для присвоения значения переменной в xquery. Я не знаю, как это сделать.
Вот что я пробовал:
declare namespace libx='http://libx.org/xml/libx2';
declare namespace atom='http://www.w3.org/2005/Atom';
declare variable $entry_type as xs:string external;
let $libx_node :=
if ($entry_type = 'package' or 'libapp') then
{element {fn:concat("libx:", $entry_type)} {()} }
else if ($entry_type = 'module') then
'
{$module_body}
'
Этот код выдает ошибку [XPST0003] Incomplete 'if' expression. Может ли кто-нибудь помочь мне исправить это?
Кроме того, может ли кто-нибудь предложить несколько хороших руководств по изучению xqueries.
Спасибо, Я не считаю, что этот вопрос остается в Интернете. Допустим, я ...
Возможный дубликат:
Блокировки повторного входа в C #
Я посмотрел здесь, на StackOverflow и на MSDN , и не могу поверить, что не смог найти этот вопрос в Интернете.
Допустим, у меня есть класс с частным член, к которому я хочу получить доступ в нескольких общедоступных методах. Эти общедоступные методы будут вызываться разными потоками, следовательно, потребуется синхронизация.
public class MyClass
{
private Object SomeSharedData = new Object();
public void MethodA()
{
lock( SomeSharedData) {
// do something
MethodB();
}
}
public void MethodB()
{
lock( SomeSharedData) {
// do something
}
}
}
Обратите внимание, что MethodA и MethodB могут вызываться пользователями этого класса, но MethodA также вызывает MethodB, что приводит к вложенному условию блокировки.
Это гарантированно безопасно? Другими словами, делает. NET обрабатывает это путем подсчета ссылок на блокировку, так что, когда я выхожу из этих методов, блокировка уменьшается? Или .NET выполняет некую магию за кулисами, просто игнорируя все последующие блокировки объекта, происходящие из того же потока?