c#的编译器计算机值为常量

Xen*_*tSs 0 c# compiler-construction constants

当我真的不知道叫什么时,我很难弄清楚这是否可行.

我有一个APIKey(可以使用不同的版本进行更改),我们有另一个字段可以将该APIKey转换为更友好的Web.我希望让编译器能够计算出网络友好性.

目前,我们正在重新计算每次调用webapi时的值.我可以很容易地定义一个const并放入它的web友好版本,但我想成为一个有点发烧友并提供更少的维护.

我想要的是这样的.

public class WebSearch{
  private const string ApiKey="jsdfjsd90234092j3_%sss";
  private const string WebFriendlyKey=#Compiler(ApiKey.Replace("-","+"));
}
Run Code Online (Sandbox Code Playgroud)

WebFriendlyKey由编译器计算的位置.

Eri*_*ert 8

C#4规范的第7.19节列出了编译器将代表您对常量执行的每个操作.字符串替换不是其中之一.

但是,您可以使用只读静态字段或具有静态属性的只读静态字段,如果尚未计算该值,则计算该值,如果是,则获取该值.在这种情况下,编译器不会进行编译,但每个appdomain只会执行一次计算.

那就是说,我同意Henk.你有更大的鱼在这里炒.担心实际影响正确性或性能的事情.