导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

使用预处理器指令进行条件编译

2014/6/18

适用于: Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows 8

本主题描述条件编译以及在为 Windows Phone 8 和 Windows 8 生成应用时如何使用它。

本主题包括以下部分。

条件编译是指定义编译器指令的过程,这些编译器指令能够对不同部分的代码进行编译并且忽略其他部分。此方法可以用于跨平台开发方案,以指定部分特定于某个特殊平台而编译的代码。

下面的示例演示如何使用 C# 中的 #if…#else…#endif 指令有条件地包含命名空间。


#if CONDITION
using Conditional.Namespace;
#else
using Another.Namespace;
#endif

条件的值确定要包括哪个命名空间。

已设置 CONDITION

using Conditional.Namespace;

未设置 CONDITION

using Another.Namespace;

下面的示例演示基于是否设置了条件编译符号,通过编译不同的代码更改程序流的方式。


public double MyMethod(int input)
{
    double result;
 
    #if CONDITION
    result = input * 0.6;
    #else
    result = input * 0.45;
    #endif
 
    return result;
}

条件的值确定功能。

已设置 CONDITION

result = input * 0.6;

未设置 CONDITION

result = input * 0.45;

类似的指令可用于其他语言。有关条件编译的更多信息,请参见 C# 处理器指令Visual Basic 中的条件编译

由于使用此方法您可以隔离条件编译块中平台特定的代码,因此只要需要,您就可以使用此方法。但是,如果这是您使用的唯一代码共享方法,在一段时间内您的代码库将变得难以控制。如果代码路径中出现细微而清晰的平台差异并且您不想要将这些差异隔离在它们自己的类、方法、项目或解决方案中,这非常有用。请注意,使用条件编译的代码不能在可移植类库中共享,因为可移植类库的目标是一次性生成,然后在选定平台上使用。

这是一种非常简单的方法,可用于当所有其他代码都是非平台特定时定义平台特定的代码。例如,您可以尝试共享 Windows Phone 8 和 Windows 应用商店 应用的代码库并更改您的代码针对每个平台的行为,方法是使用能够设置的条件(具体取决于您正在对哪个应用或平台进行编译)包围平台特定的代码。下面的示例使用编译器指令,以便能够采用不同的方式为每个平台编译 PlatformSpecificMethod 中的代码。


namespace ProjectB
{
    public class MyClass
    {
        public void CommonMethodA()
        {
            // code that is common to Windows Phone 8 and Windows 8
        }
 
        public int CommonMethodB()
        {
            int result = 0;
 
            // code that is common to Windows Phone 8 and Windows 8
 
            return result;
        }
 
        public void PlatformSpecificMethod()
        {
            #if NETFX_CORE
            // code for Windows 8
            #else
            // code for Windows Phone 8
            #endif
        }
    }
}

使用 Visual Studio Express 2012 for Windows 8 创建的 Windows 8 项目已经拥有一个名为 NETFX_CORE 的编译器指令集。因此,如果已经进行了设置,此项目将是一个 Windows 8 项目。正如您在上一个代码中看到的,我们利用这个事实有条件地编译 PlatformSpecificMethod。这是共享代码的简单方法,并且您的类中也拥有平台特定的代码。

显示:
© 2014 Microsoft