Почему в C # определены два разных варианта использования ʻusing`?

Довольно быстрый мог бы быть чем-то вроде этого:

int IntPow(int x, uint pow)
{
    int ret = 1;
    while ( pow != 0 )
    {
        if ( (pow & 1) == 1 )
            ret *= x;
        x *= x;
        pow >>= 1;
    }
    return ret;
}

Примечание, что это не позволяет отрицательные полномочия. Я оставлю это как осуществление Вам.:)

Добавленный: Ах да, почти забыл - также добавляют проверку переполнения/потери значимости, или Вы могли бы быть в для нескольких противных неожиданностей в будущем.

23
задан BoltClock 10 March 2011 в 14:22
поделиться

1 ответ

Я не вижу, как эти два использования могут быть одинаковыми в компиляторе.

Я думаю, что причиной двойного использования является просто тот факт, что ключевое слово очень хорошо подходит для обеих целей и нет опасности двусмысленности (одно является директивным, другое - оператором, поэтому они появляются в совершенно ином контексте ). Я думаю, что это прекрасно - язык должен иметь небольшое количество ключевых слов, и их использование должно быть легким для понимания - так обстоит дело в обоих случаях использования using.

Как упомянул Linkgorn в комментарии, еще одним примером такой же ситуации является where, который также существует в двух местах (общие ограничения и синтаксис запроса LINQ).

19
ответ дан 29 November 2019 в 01:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: