如何将字符串转换为ushort

时间:2017-07-24 12:55:46

标签: c# string ushort

我已经研究了所有与我的查询相符的问题并尝试了他们的解决方案,但是似乎没有一个对我有效,所以我问我如何将字符串转换为ushort我已经准备好了这个

public static string vid
{
    get { return "<vehicleid>"; }
}

我试过这个:short[] result = vid.Select(c => (ushort)c).ToArray();     但是当我把vid ushort放到这个位置时

[RocketCommand("vehicle", "This command spawns you a vehicle!", "<vehicleid>", AllowedCaller.Player)]
public void ExecuteCommandVehicle(IRocketPlayer caller, string[] command)
{
    UnturnedPlayer spawner = (UnturnedPlayer)caller;
    spawner.GiveVehicle(vid);
}

我收到以下错误:

  

严重级代码描述项目文件行抑制状态   错误CS1503参数1:无法从'string'转换为'ushort'竞技场v by FridgeBlaster C:\ Users \ Jonathan \ Documents \ Visual Studio 2015 \ Projects \ arena v by FridgeBlaster \ arena v by FridgeBlaster \ vehicle.cs 71 Active < / p>

4 个答案:

答案 0 :(得分:2)

您正在寻找的是ushort.TryParseushort.Parse方法 我建议使用这段代码:

ushort[] result = vid.Where(i => ushort.TryParse(i, out short s)).Select(ushort.Parse);

或者如果您不使用最新的C#版本:

ushort[] result = vid.Where(i => { ushort r = 0; return ushort.TryParse(i, out r); }).Select(ushort.Parse);

好的问题(正如您的错误所说)是您的GiveVehicle方法接受ushort作为参数,并且您将string类型放入其中。尝试做这样的事情:

ushort val = 0;
if(ushort.TryParse(vid, out val))
{
    UnturnedPlayer spawner = (UnturnedPlayer)caller;
    spawner.GiveVehicle(val);
}

基于on this source,负责调用标有RocketCommand属性的方法。您的<"vehicleid"> /应该首先存储在command数组中。所以要解决这个问题并转换使用类似的东西:

if(command.Length > 0)
{
    ushort val = 0;
    if(!string.IsNullOrWhiteSpace(command[0]) && ushort.TryParse(command[0], out val))
    {
        UnturnedPlayer spawner = (UnturnedPlayer)caller;
        spawner.GiveVehicle(val);
    }
}

答案 1 :(得分:1)

要将字符串转换为ushort,请执行以下操作:UInt16.Parse(string)

答案 2 :(得分:0)

要么将字符串转换为short:

Int16.Parse(...)

Int16.TryParse(...)

或者你想通过首先将字符串转换为字符数组来将char转换为short:

vid.ToCharArray[..]

答案 3 :(得分:0)

基于行short[] result = vid.Select(c => (ushort)c).ToArray();,看起来单个字符串中可能有多个ID(我假设每个字符)。

如果是这种情况,请尝试以下方法:

ushort[] result = vid.ToCharArray().Select(c => (ushort) c).ToArray();

如果你在一个字符分隔的字符串中有多个实际数字(例如&#34; 13,15,18&#34;),请给它一个镜头:

ushort[] result = vid.Split(separator).Select(str => ushort.Parse(str)).ToArray();

对于其中任何一个选项,请确保包含SystemSystem.Linq命名空间的使用指令。

通过对此答案及其他答案的讨论,看起来command是标记"/vehicle <id>"的结果。在这种情况下,ExecuteCommandVehicle(IRocketPlayer, string[])方法的主体应该与此类似:

ushort result = 0;
if (ushort.TryParse(command[1], out result)) {
  UnturnedPlayer spawner = caller as UnturnedPlayer;
  caller?.GiveVehicle(result);
}