Let me talk about the conclusion first, this is by design.
The result of A*B is of type Int32, and it is illegal to assign it to UInt16.
This is called Numeric Promotion and is a rule to prevent data loss. You can find many explanations about this on the Internet, such as:
Arithmetic operators (C# reference)
Explain integer comparison with promotion
For example, if A=65534 and B=10, then their addition or multiplication is beyond the scope of UInt16.
If you are sure that the result will not exceed the range, you can force the conversion.
If the response is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.