Gis*_*ofx 3 .net c# static compilation constants
我正在使用netMF编程嵌入式设备.记忆很珍贵.我正在访问低级MCU寄存器我想将所有这些寄存器保存在某种类型的静态类中,以便于访问.并非所有常量都在给定程序中使用.
是否编译了未使用的常量?
如果是这样,有没有更好的方式使它们不被编译并且程序大小更小,同时产生静态类的相同功能并获得intellisense是visual studio?
public static class DeviceRegisters
{
public const uint Tim9 = 0x40014000;
public const uint Tim8 = 0x40010400;
public const uint GPIOA_MODER = 0x40020000;
}
Run Code Online (Sandbox Code Playgroud)
然后执行如下:
public class Thing
{
public thing(uint timerRegister, uint GPIOx_register)
{
//do stuff
Register thing = new Register(timerRegister);
//...
}
}
Run Code Online (Sandbox Code Playgroud)
实例化如下:
public class Program
{
public static Thing MyThing;
public static void Main()
{
MyThing = new Thing(DeviceRegisters.Tim9, DeviceRegisters.GPIOA_MODER);
//rest of program below
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定你是否希望它们在编译中丢失.由于常量是public,它们可以在引用它的另一个程序集中使用.编译器不会优化它们.
我很确定如果它们已经存在internal且未使用,编译器会在发布模式下删除它们.
错了,看起来内部类中的私有常量在发布模式下没有优化,并且启用了优化代码选项...
即便如此,uint只需要32位.没那么担心.