Я пытаюсь преобразовать вычисленное значение в uint16. Я жестко запрограммирован ради примера. В C # это работает. Но то, что я считаю, это тот же код в Powershell не удается. Учтите следующее:
В примере кода powershell он выдает:
Cannot convert value "101398986" to type "System.UInt16". Error: "Value was either too large or too small for a UInt16."
At D:\OneDrive\Desktop\VaribleCasting2.ps1:2 char:1
+ [uint16]$v = [uint16]$g
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastIConvertible
Я пробовал [конвертировать] :: ToUInt16 ($ g), который он производит:
Exception calling "ToUInt16" with "1" argument(s): "Value was either too large or too small for a UInt16."
At D:\OneDrive\Desktop\VaribleCasting2.ps1:2 char:1
+ [uint16]$v = [convert]::ToUInt16($g)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : OverflowException
PowerShell (сбой):
$g = 101398986
[uint16]$v = [uint16]$g
$v
C # (успешно):
using System;
namespace NumericTypeTesting
{
class Program
{
static void Main(string[] args)
{
var g = 101398986;
UInt16 v = (UInt16)g;
Console.WriteLine(v);
Console.ReadLine();
}
}
}
Я ожидал, что .NET на обеих платформах даст одинаковый результат. Спасибо за любую помощь!