- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我尝试了以下代码:
class Magic {
[Conditional("DEBUG")]
public static void DoMagic( int stuff )
{
}
public static int ComputeMagic()
{
throw new InvalidOperationException();
}
}
class Program
{
static void Main(string[] args)
{
Magic.DoMagic(Magic.ComputeMagic());
}
}
看起来在 Release 构建中没有抛出异常,因此不仅删除了对标记有 ConditionalAttribute
的方法的调用,而且还消除了参数计算。
这样的行为有保障吗?
最佳答案
是的,当 DEBUG
未定义时(这在 Release 构建中很典型),参数评估被移除。
If the symbol is defined, the call is included; otherwise, the call(including evaluation of the parameters of the call) is omitted.
关于c# - 使用 ConditionalAttribute 是否也会删除参数计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21935452/
我查看了 ConditionalAttribute 声明,它是这样声明的: 我发现 JavaScript 代码是这样的: [AttributeUsage(AttributeTargets.Class
ConditionalAttribute 可用于根据定义的编译器符号删除对标记方法的调用。我假设我们无法自己创建此类,因为编译器必须专门寻找它。 我想知道还有哪些编译器或语言使用的其他类我们无法自己编
根据 ConditionalAttribute 上的文档类(class): Applying ConditionalAttribute to a method indicates to compile
我知道 ConditionalAttribute 的作用。 文档说它也可以应用于一个类,如果它是从 Attribute 派生的: [Conditional("DEBUG")] public class
这是出于好奇而提出的问题。我正在处理一些代码,并意识到以下代码仍然可以在发布时编译: class Program { [Conditional("DEBUG")] private st
我正在研究 .NET C#(特别是 Xamarin.Forms)。我不太了解编译器/运行时如何在幕后使用 ConditionalAttribute。 如果我有一个定义了 System.Diagnost
我尝试了以下代码: class Magic { [Conditional("DEBUG")] public static void DoMagic( int stuff ) {
我想编写一个 async 方法,但我希望它仅在使用特定编译常量编译程序集时才可调用。 单向 我可以做到这一点的一种方法是使用 pragma 指令,即像这样的条件编译常量: // Callee #if
我有一个 C++-CLI 引用类,它公开了一个用 C++ 实现的分析基础结构。 在 C++ 中,我有预处理器指令 PROFILING_ENABLED 来确定代码中是否存在侵入式分析函数。 当将这些暴露
是否有类似的条件不存在属性,或者如果该符号未定义,是否有使用条件属性仅包含方法的方法? 我正在寻找的是这样工作的: [Conditional("!SILVERLIGHT")] private void
在工作中,我们有很多 AS3 代码有条件地执行日志记录或断言,如下所示: CONFIG::debug { assert(blah > 2); } 我宁愿只写: assert(blah > 2)
在 C# 中,可以创建如下方法: [Conditional("DEBUG")] private void MyFunction() { } 在发布中,这个方法将不再“存在”。 使用 C++,我有一个类
我是一名优秀的程序员,十分优秀!