所以我现在有两节课。一种正在初始化,另一种没有初始化,我不明白为什么。 someList
就在那儿,因为我认为我太愚蠢而无法初始化列表,但是someList
的工作原理还不错。
这是我的课程:
using System;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
class Calendar
{
static List<CalendarNode> _calendar = new List<CalendarNode>();
static List<int> someList = new List<int>();
public static int addNode(CalendarNode node)
{
if (_calendar != null)
{
foreach (CalendarNode item in _calendar)
{
if (item.Username == node.Username)
{
return 1;
}
}
}
someList.Add(1); // works like a charm
_calendar.Add(node); // throws Error Object reference not set to an instance of an object
}
}
我在做什么错了?
感谢您的帮助
edit1:
Regex pattern = new Regex(@"\.0000");
DateTime date;
IUserMessage message;
CalendarNode node = new CalendarNode();
try
{
if (pattern.Match(birthday).Success)
{
Regex replace = new Regex(@"\d{4}");
birthday = replace.Replace(birthday, "1900");
date = DateTime.ParseExact(birthday, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture);
}
else
{
date = DateTime.ParseExact(birthday, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture);
}
node = new CalendarNode(Context.User.Mention, date);
}
catch (Exception)
{
message = await Context.Channel.SendMessageAsync($"Probably invalid date! Use format: \"dd.mm.yyyy\"\nIf the error persists, contact Nigolasy");
}
int status = 2;
if (node != null)
{
status = Calendar.addNode(node);
}
这是我称为addNode的代码。
还有我的CalendarNode类,以防它很重要
class CalendarNode
{
string username;
DateTime birthdate;
public CalendarNode(string username, DateTime birthdate)
{
this.username = username;
this.birthdate = birthdate;
}
public CalendarNode(){ }
public string Username { get { return username; } }
public DateTime Birthdate { get { return birthdate; } }
}
答案 0 :(得分:1)
所以,我感到非常羞愧。
从代码的字面意义开始调试所有内容后,我发现了一个加载函数,该函数现在还不应该存在,该函数将我的_calendar
和一个空的JSON字符串ofc设置为一个空列表。我写这本书的时候一定没睡着...
当我早先搜索_calendar
时,我不知道为什么Visual Studio没有向我展示这一部分。也许是因为我没有打开启动文件?
无论如何,感谢您的帮助和时间。
(我仍然会研究lock
部分。看起来非常重要!)
答案 1 :(得分:0)
您的应用会将节点添加到列表中,因为该列表不在null的检查范围之内。
public static int addNode(CalendarNode node)
{
if (_calendar != null)
{
foreach (CalendarNode item in _calendar)
{
if (item.Username == node.Username)
{
return 1;
}
}
_calendar.Add(node);
}
}