Действительно ли желательно использовать strcmp или _tcscmp для сравнения строк в версиях Unicode?
_tcscmp ()
- макрос. Если вы определяете Unicode
, он будет использовать WCSCMP ()
, в противном случае он будет использовать STRCMP ()
.
Обратите внимание на типы tchar
, ptstr
и т. Д. Похоже. Они будут WHAR
и PWSTR
, если вы определяете Unicode
, и Char
и PSTR
иначе.
Кажется трудным способом оптимизации, почему бы не запустить 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
?
Нет, необходимо использовать _tcscmp
. Это позволит правильно функционировать в зависимости от флагов компилятора.