Benktesh Sharma Ответов: 1

Constexpr как ключевое слово в C#


Существует ли constexpr как функциональность/синтаксис (который может быть использован во время компиляции в функциях на C++), доступных в C#?

в C++ я могу иметь функцию (например, Фибоначчи), как показано ниже:

constexpr int Fibonacci(int n) {
  //cout << "Executed Fib" << endl;
  switch (n) {
    case 0: return 0;
    case 1: return 1;
    default:
       return Fibonacci(n - 1) + Fibonacci(n - 2);
  }
}

и я могу проверить в основном, чтобы убедиться, что функция правильна, сделав что-то вроде:
int main()
{
   static_assert(Fibonacci(5) == 7, "Bad Program");
   ///...
}


Это означает, что мне не нужно ждать времени выполнения, чтобы оценить, будет ли работать функция Фибоначчи. Это похоже на простой тест во время компиляции. Я спрашиваю, Могу ли я сделать что-то подобное в C#.

Что я уже пробовал:

Я гуглю для этого. Обнаружил, что кто-то в quora упомянул java, но этого не хватает.
https://www.quora.com/What-is-the-counterpart-to-the-C++-constexpr-clause-in-languages-like-Java-or-C[^]

ZurdoDev

в c# есть константы, но чего именно вы хотите достичь?

Benktesh Sharma

в C++ я могу иметь функцию (например, Фибоначчи), как показано ниже:

constexpr int Fibonacci(int n) {
//соиь <&ЛТ; "исполнен привирать" на << епси;
переключатель (n) {
случай 0: возврат 0;
случай 1: возвращение 1;
по умолчанию:
возврат Фибоначчи(n - 1) + Фибоначчи(n - 2);
}

}

и я могу проверить в основном, чтобы убедиться, что функция правильна, сделав что-то вроде:

тап_п()
{
static_assert(Fibonacci(5) == 7, "плохая программа");
///...
}

Это означает, что мне не нужно ждать времени выполнения, чтобы оценить, будет ли работать функция Фибоначчи. Это похоже на простой тест во время компиляции. Я спрашиваю, Могу ли я сделать что-то подобное в C#.

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Benktesh Sharma

Спасибо. Я обновил вопрос.

1 Ответов

Рейтинг:
8

Thomas Daniels

Нет, в C#ничего подобного нет. Есть только предложение для этого: Предложение: выполнение функции времени компиляции · выпуск #2379 · dotnet/csharplang · GitHub[^] но на сегодняшний день никакой реализации нет.


Benktesh Sharma

Спасибо Томас Дэниелс