Указатель на любой тип может быть свободно преобразован в или из void *
без приведения.
Раздел 6.3.2.3p1 стандарта C гласит:
Указатель на void может быть преобразован в или из указателя на любой тип объекта. Указатель на любой тип объекта может быть преобразован в указатель на void и обратно; результат должен сравниться с исходным указателем.
blockquote>Единственный раз, когда требуется приведение, - это если вы передаете указатель на переменную функцию, такую как
printf
, где неявное преобразование не может произойти, поскольку оно не будет знать, какой именно тип передается в есть.Обратите внимание, что, как и с любым типом указателя, вы не можете «удалить» квалификатор, такой как
const
, при передаче функции без приведения. Разделы 6.3.2.3p2 гласят:Для любого квалификатора q указатель на тип, не квалифицированный q , может быть преобразован в указатель на q -квалифицированная версия типа; значения, сохраненные в исходном и преобразованном указателях, должны сравниваться равными.
BLOCKQUOTE>
Ничего. Так как типом свойства является Тип
, синтаксический анализатор XAML знает, что нужно попытаться преобразовать все, что вы передаете, в Тип
. В других сценариях тип свойства может быть менее конкретным (например, Object
), и именно там вам понадобится расширение разметки, иначе синтаксический анализатор XAML просто интерпретирует ваше значение как String
.
Помимо реальной разницы, описанной выше, использование {x: Type NameOfType}, очевидно, будет по-разному выделено в вашей среде IDE, и оно сразу выделяется и выделяется (в отличие от обычной строки). Так что это мое личное предпочтение.