Да, любые вызовы, необходимые для аргументов, также удаляются. Это означает, что для типичного варианта использования (отладочные сборки) вы удаляете все выражение, как правило, то, что предназначено.
По сути, вы должны быть очень осторожны при использовании либо [Conditional]
методов, или в равной степени (в C # 3.0) частичных методов - которые ведут себя очень похоже, если другая половина частичного метода не реализован. В качестве примера (для частичных методов) см. Ниже. Обратите внимание, что вызов HasSideEffect()
удален (раскомментируйте вторую половину Bar
, чтобы он заработал):
using System;
partial class Foo {
partial void Bar(string value);
static void Main() {
Foo foo = new Foo();
foo.Bar(HasSideEffect());
}
static string HasSideEffect() {
Console.WriteLine("hello");
return "world";
}
}
partial class Foo {
/* uncomment this
partial void Bar(string value) {
Console.WriteLine(value);
}*/
}