[英]how to convert a string to a 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:無法從FridgeBlaster將'string'轉換為'ushort'區域v由FridgeBlaster C:\\ Users \\ Jonathan \\ Documents \\ Visual Studio 2015 \\ Projects \\ arena v由FridgeBlaster \\ arena v由FridgeBlaster \\ vehicle.cs 71有效
您正在尋找的是ushort.TryParse
或ushort.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);
}
基於此源 ,它負責調用標有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);
}
}
對於簡單的字符串到ushort的轉換: UInt16.Parse(string)
您想將字符串轉換為簡短形式:
Int16.Parse(...)
要么
Int16.TryParse(...)
或者您想通過先將字符串轉換為char數組將char轉換為short:
vid.ToCharArray[..]
基於該行short[] result = vid.Select(c => (ushort)c).ToArray();
看起來一個字符串中可能有多個ID(我假設每個字符)。
如果是這種情況,請嘗試以下操作:
ushort[] result = vid.ToCharArray().Select(c => (ushort) c).ToArray();
如果字符串中有幾個實際數字,並且用字符分隔(例如“ 13,15,18”),請嘗試一下:
ushort[] result = vid.Split(separator).Select(str => ushort.Parse(str)).ToArray();
對於這兩個選項,請確保包括對System
和System.Linq
命名空間使用using指令。
通過討論此答案和其他答案,看來command
是對"/vehicle <id>"
進行標記化的結果。 在這種情況下, ExecuteCommandVehicle(IRocketPlayer, string[])
方法的主體應與此類似:
ushort result = 0;
if (ushort.TryParse(command[1], out result)) {
UnturnedPlayer spawner = caller as UnturnedPlayer;
caller?.GiveVehicle(result);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.