我有一个被声明为属性的字典,以便我可以在其他函数和事件处理程序中访问它,但看到我是c#的新手,我无法弄清楚如何正确地执行此操作
声明字典
Dictionary<string, int> occurrenceDictionary { get; set; }
我有两个功能。第一个functionOne
将单词列表转换为dictionary<string, int>
,其中string
是单词,int
是单词出现在列表中的次数。
public string functionOne(List<string> myList)
{
foreach (string item in myList)
{
if (!occurrenceDictionary.ContainsKey(item))
{
occurrenceDictionary.Add(item, 1);
}
else
{
occurrenceDictionary[item]++;
}
}
return maxKey;
}
第二个函数将用户输入wordSearch.Text
与此字典occurenceDictionary
进行比较,如果它们匹配,则会告诉用户该单词出现的次数(键是单词,值是发生的数量)。
public int word_search(Dictionary<string, int> myDict)
{
if(myDict != null)
{
if (myDict.ContainsKey(wordSearch.Text))
{
...
}
else
{
...
}
}
else
{
...
}
}
现在我有一个等待用户点击Search
按钮的事件监听器。这是我遇到的最麻烦的部分,我不知道如何在事件处理程序中正确调用我的word_search
函数,因为我现在拥有它的方式,我总是得到{{{ 1}}它说修复它我必须添加
NullReferenceException
但是将它添加到functionOne对我来说没有意义,因为我希望将项目添加到字典中,无论其是否为空,因为if(occurencesDictionary != null) ...
正在填充字典。所以我不确定如何解决这个问题
如果有人能告诉我我做错了什么,或者可能会向我展示一个更有帮助的方法
答案 0 :(得分:0)
...但是将它添加到functionOne对我来说没有意义,因为我希望将项目添加到字典中,无论其是否为空,因为functionOne正在填充字典。
Dictionary<string, int> occurrenceDictionary { get; set; } = new Dictionary<string, int>();
不是空的,甚至没有初始化。
在使用之前,您将首先对其进行初始化 您可以在构造函数中执行此操作,也可以通过属性初始值设定项执行此操作:
{{1}}
答案 1 :(得分:0)
您只声明但从未初始化(使用new)您的哈希变量,因此它始终为null。
答案 2 :(得分:0)
你需要公共字典的出现字典=新的字典();
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public Dictionary<string, int> occurrenceDictionary = new Dictionary<string, int>();
public string functionOne(List<string> myList)
{
string maxKey = "";
foreach (string item in myList)
{
if (!occurrenceDictionary.ContainsKey(item))
{
occurrenceDictionary.Add(item, 1);
}
else
{
occurrenceDictionary[item]++;
}
}
return maxKey;
}
public int word_search(Dictionary<string, int> myDict)
{
if(myDict != null)
{
if (myDict.ContainsKey(wordSearch.Text))
{
}
else
{
}
}
else
{
}
return 1;
}
private void buttonSearch_Click(object sender, EventArgs e)
{
occurrenceDictionary.Add("hello", 1);
}
}
}