Действительно ли желательно использовать strcmp или _tcscmp для сравнения строк в версиях Unicode?

Действительно ли желательно использовать strcmp или _tcscmp для сравнения строк в версиях Unicode?

9
задан Ricardo Altamirano 13 August 2012 в 18:40
поделиться

2 ответа

_tcscmp () - макрос. Если вы определяете Unicode , он будет использовать WCSCMP () , в противном случае он будет использовать STRCMP () .

Обратите внимание на типы tchar , ptstr и т. Д. Похоже. Они будут WHAR и PWSTR , если вы определяете Unicode , и Char и PSTR иначе.

9
ответ дан 4 December 2019 в 13:01
поделиться

Кажется трудным способом оптимизации, почему бы не запустить APC? вы получите аналогичные преимущества производительности.

-121--4067306-

ToList отличается от (casting) в List.

ToList принимает любой IEnumerable (списки, массивы, словари, наборы и т.д.) и превращает его в список.

Casting to List принимает объект, который уже является списком некоторого рода, и помечает его как список. Пример:

// fail -- arrays are not lists
var not_a_list = (List<int>)int[];
// success: arrays *are* IEnumerable, so you can convert them to a list.
var list_from_array = new [] { 1,2,3,4,5 }.ToList();
// success: WorkflowRoleCollection derives from List<WorkflowRole>
var derived_from_list = (List<WorkflowRole>) new WorkflowRoleCollection();

В вашем случае Concat возвращает IEnumerable, а не List. Помните, что он должен поддерживать генераторы (которые оцениваются лениво), поэтому не имеет смысла, чтобы это было что-то вроде списка ниже.

Btw, вы просмотрели встроенную функцию Enumerable.Range ?

-121--3595110-

Нет, необходимо использовать _tcscmp. Это позволит правильно функционировать в зависимости от флагов компилятора.

7
ответ дан 4 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

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