Различие между TargetType = “controlType” и TargetType = “{x:Type controlType}”

Указатель на любой тип может быть свободно преобразован в или из void * без приведения.

Раздел 6.3.2.3p1 стандарта C гласит:

Указатель на void может быть преобразован в или из указателя на любой тип объекта. Указатель на любой тип объекта может быть преобразован в указатель на void и обратно; результат должен сравниться с исходным указателем.

blockquote>

Единственный раз, когда требуется приведение, - это если вы передаете указатель на переменную функцию, такую ​​как printf, где неявное преобразование не может произойти, поскольку оно не будет знать, какой именно тип передается в есть.

Обратите внимание, что, как и с любым типом указателя, вы не можете «удалить» квалификатор, такой как const, при передаче функции без приведения. Разделы 6.3.2.3p2 гласят:

Для любого квалификатора q указатель на тип, не квалифицированный q , может быть преобразован в указатель на q -квалифицированная версия типа; значения, сохраненные в исходном и преобразованном указателях, должны сравниваться равными.

BLOCKQUOTE>

24
задан akjoshi 15 March 2012 в 06:13
поделиться

2 ответа

Ничего. Так как типом свойства является Тип , синтаксический анализатор XAML знает, что нужно попытаться преобразовать все, что вы передаете, в Тип . В других сценариях тип свойства может быть менее конкретным (например, Object ), и именно там вам понадобится расширение разметки, иначе синтаксический анализатор XAML просто интерпретирует ваше значение как String .

19
ответ дан 28 November 2019 в 23:55
поделиться

Помимо реальной разницы, описанной выше, использование {x: Type NameOfType}, очевидно, будет по-разному выделено в вашей среде IDE, и оно сразу выделяется и выделяется (в отличие от обычной строки). Так что это мое личное предпочтение.

0
ответ дан Mark Zhukovsky 28 November 2019 в 23:55
поделиться
Другие вопросы по тегам:

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