小编Rei*_*ski的帖子

在编译时评估表达式

我知道这已被问过很多,但仅限于C/C++和Java.问题与使用常量表达式的性能优势有关:

当我调用只有常量作为参数的静态函数时,有没有办法告诉编译器它应该在编译时评估调用并用结果替换调用?

例:

const double pi = Math.PI; //works as Math.PI is a constant  
const double spi = Math.Sin(Math.PI); //compiler error, because expression must be constant  
Run Code Online (Sandbox Code Playgroud)

是否没有指令(更好:属性)明确地告诉编译器像Math.Sin()这样的静态方法没有在内部修改或读取任何数据,因此在技术上可以在编译时评估调用?

哦,请不要回答像"只是做const double spi = 0":),因为我的例子只是我所遇到的问题的简化版本:在保持最高性能的同时提高代码可维护性.

感谢您的帮助 - 非常感谢!

c# compiler-construction visual-studio

6
推荐指数
1
解决办法
1997
查看次数

标签 统计

c# ×1

compiler-construction ×1

visual-studio ×1