我试图将一个整数设置为一个已存在的整数,它给了我一个NullReferenceException。因此,从.json文件中获取并设置整数,然后我尝试将其设置为一个名为price的整数。
Configuration.BotInfo botConfig;
int price = botConfig.TicketPriceBuy;
这是BotInfo类
public class BotInfo
{
public string Username { get; set; }
public string Password { get; set; }
public string DisplayName { get; set; }
public string ChatResponse { get; set; }
public string LogFile { get; set; }
public string BotControlClass { get; set; }
public int MaximumTradeTime { get; set; }
public int MaximumActionGap { get; set; }
public string DisplayNamePrefix { get; set; }
public int TradePollingInterval { get; set; }
public string LogLevel { get; set; }
public int TicketPriceBuy { get; set; }
public int BackpackExpanderPriceBuy { get; set; }
public int DecalToolPriceBuy { get; set; }
public int KeyPriceBuy { get; set; }
public int NameTagPriceBuy { get; set; }
public int AustralianGoldPriceBuy { get; set; }
public int TicketPriceSell { get; set; }
public int BackpackExpanderPriceSell { get; set; }
public int DecalToolPriceSell { get; set; }
public int KeyPriceSell { get; set; }
public int NameTagPriceSell { get; set; }
public int AustralianGoldPriceSell { get; set; }
public ulong[] Admins { get; set; }
但后来我得到了:
哦,出现错误:发生了未知错误: System.NullReferenceException:对象引用未设置为 对象的实例。在 SteamBot.SimpleUserHandler.OnTradeAddItem(Item schemaItem,Item inventoryItem)在C:\ SteamBot - JiaWei \ SteamBot \ UserHandler.cs:行 182在SteamTrade.Trade.FireOnUserAddItem(TradeEvent tradeEvent)中 C:\ SteamBot - JiaWei \ SteamTrade \ Trade.cs:640行 C:\ SteamBot中的SteamTrade.Trade.Poll() - JiaWei \ SteamTrade \ Trade.cs:572号线 SteamTrade.TradeManager。<> c__DisplayClass6.b__5()in C:\ SteamBot - JiaWei \ SteamTrade \ TradeManager.cs:第272行。
第182行是:
int price = botConfig.TicketPriceBuy;
(其他几行并不重要,因为只是从第一行开始跟进。)
那么,我该如何解决这个问题?
答案 0 :(得分:3)
这与整数无关。看看你的两行:
Configuration.BotInfo botConfig;
int price = botConfig.TicketPriceBuy;
您声明了一个BotInfo
对象,但从未将其初始化为任何内容。因此botConfig
是null
。然后,您立即尝试取消引用该对象以从中提取值。但是您无法取消引用null
。
您需要初始化引用类型。例如:
Configuration.BotInfo botConfig = new Configuration.BotInfo();
要确认这一点,请在调试代码中放置一个断点。逐行调试调试器并检查您正在使用的对象的运行时值。这将帮助您更快地确定代码中的问题。
答案 1 :(得分:0)
我认为你还没有在这里创建类的实例。要在对象botConfig
中获取值,您需要先对其进行初始化。如果没有初始化,您将无法访问对象中的公共methods
和properties
。您将获得null引用。
Configuration.BotInfo botConfig = new Configuration.BotInfo();
//some method which populate botConfig or below line
botConfig.TicketPriceBuy = 123;
//you will get the value
int price = botConfig.TicketPriceBuy;
答案 2 :(得分:0)
我不确定你是否需要null,但你可以通过制作一个可以为空的integer
来解决这个问题:
int? price = botConfig == null ? null : botConfig.TicketPriceBuy;