Как я могу сделать все классы IDisposable окрашенными по-другому в Visual Studio IDE?

Должна быть возможность упаковать 'не может быть идеальным квадратом, если последние X цифр N' гораздо эффективнее, чем это! Я буду использовать 32-битные числа java и получу достаточно данных для проверки последних 16 битов числа - это 2048 шестнадцатеричных значений типа int.

...

Хорошо. Либо я столкнулся с некоторой теорией чисел, которая немного выше меня, либо в моем коде есть ошибка. В любом случае, вот код:

public static void main(String[] args) {
    final int BITS = 16;

    BitSet foo = new BitSet();

    for(int i = 0; i< (1<<BITS); i++) {
        int sq = (i*i);
        sq = sq & ((1<<BITS)-1);
        foo.set(sq);
    }

    System.out.println("int[] mayBeASquare = {");

    for(int i = 0; i< 1<<(BITS-5); i++) {
        int kk = 0;
        for(int j = 0; j<32; j++) {
            if(foo.get((i << 5) | j)) {
                kk |= 1<<j;
            }
        }
        System.out.print("0x" + Integer.toHexString(kk) + ", ");
        if(i%8 == 7) System.out.println();
    }
    System.out.println("};");
}

и вот результаты:

(изд: исключен из-за низкой производительности в prettify.js; просмотрите историю изменений, чтобы увидеть.)

16
задан quillbreaker 27 July 2009 в 16:02
поделиться

6 ответов

Это, безусловно, возможно, хотя это не так просто, как просто изменить параметр. Для этого вам потребуется написать надстройку Visual Studio.

Посетите http://msdn.microsoft.com/en-us/vsx/bb980955.aspx , чтобы начать работу. Как укажут другие. Это не для слабонервных.

Вот ссылка, которая может указать вам на то, что вы ищете: http://msdn.microsoft.com/en-us/library/bb166778.aspx

3
ответ дан 30 November 2019 в 22:31
поделиться

Вы не можете. Это потребует поддержки языковой службы, и ни C #, ни VB.Net не предоставляют эту функциональность.

Не может, наверное, слишком сильное слово. Это, безусловно, можно сделать с помощью надстройки, которая глубоко проверяет код и определяет иерархии. Однако это весьма нетривиальная задача.

1
ответ дан 30 November 2019 в 22:31
поделиться

РЕДАКТИРОВАТЬ: когда я впервые написал это boost :: multiprecision :: uint128_t еще не было. Сохраняем этот ответ по историческим причинам.


Я создал класс uint128 раньше, вы можете проверить его по адресу: http://www.codef00.com/code/uint128.h .

. ] Он зависит от ускорения для автоматического предоставления всех вариантов математических операторов, поэтому он должен поддерживать все, что делает собственный тип unsigned int .

Есть некоторые незначительные расширения для встроенных типов, такие как инициализируя его строкой вроде этой:

uint128_t x("12345678901234567890");

Существует вспомогательный макрос, который работает аналогично макросам в C99, который вы можете использовать следующим образом: Но время, необходимое для создания такой надстройки, потребует больше времени, которое вы потратите на просмотр компонентов и определение того, являются ли они одноразовыми

0
ответ дан 30 November 2019 в 22:31
поделиться

Я не уверен, умеют ли FXCop или StyleCop это делать. Но тогда это будет предложение / предупреждение после компиляции.

Думаю, Resharper предлагает это.

0
ответ дан 30 November 2019 в 22:31
поделиться

Говорят, что такие вещи будут намного проще в VS.NET 2010 . Редактор переписывается в WPF.

0
ответ дан 30 November 2019 в 22:31
поделиться

Может быть, я плохой человек для этого, но я недавно использую этот кусок кода:

public static void BulkDispose(object[] objects)
{
  foreach (object o in objects)
  {
    if (o != null)
    {
      if (o is IDisposable)
      {
        IDisposable disposable = o as IDisposable;
        disposable.Dispose();
      }
    }
  }
}
0
ответ дан 30 November 2019 в 22:31
поделиться
Другие вопросы по тегам:

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