我一直在编写程序中的字符串代码:
string[] keywords = { "abstract", "as", "etc" };
并且它在我的代码之后使用它(在mainform.cs中):
for (int i = 0; i < keywords.Length; i++)
{
if (keywords[i] == token)
{
// Apply alternative color and font to highlight keyword.
rtb.SelectionColor = Color.Blue;
rtb.SelectionFont = new Font("Courier New", 10, FontStyle.Bold);
break;
}
}
但是我想为关键字创建单独的类(KeyWord.cs)并在mainform中声明它但这段代码不起作用:
KeyWord.cs:
namespace editor
{
class KeyWord
{
string[] keywords = { "abstract", "as", "etc" };
}
}
Mainform.cs:
string[] keywords;
for (int i = 0; i < keywords.Length; i++)
{
if (keywords[i] == token)
{
// Apply alternative color and font to highlight keyword.
rtb.SelectionColor = Color.Blue;
rtb.SelectionFont = new Font("Courier New", 10, FontStyle.Bold);
break;
}
}
错误说:
使用未分配的本地变量'keywords':
请注意,此代码在mainform中处于无效状态:
private void TextChangedEvent(object sender, EventArgs e)
{
}
我该怎么办?
答案 0 :(得分:1)
欢迎使用Stackoverflow,您需要获取KeyWord类的实例,然后将其关键字字符串数组分配给Mainform.cs中本地声明的String[] keywords
,例如:
var keyboardCls = new editor.KeyWord();
String[] keywords = keyboardCls.keywords;
for (int i = 0; i < keywords.Length; i++)
{
if (keywords[i] == token)
{
// Apply alternative color and font to highlight keyword.
rtb.SelectionColor = Color.Blue;
rtb.SelectionFont = new Font("Courier New", 10, FontStyle.Bold);
break;
}
}
编辑:
找不到类型或命名空间名称“KeyWords”。
namespace editor
//&lt; - 删除命名空间或使其与frmMain.cs的命名空间相同,或在实例化new editor.KeyWord();
时完全限定命名空间
我编辑了我的代码以显示最后一个选项。此外,如果KeyWord.cs与MainForm.cs位于不同的项目中,那么您将需要添加一个Reference。
答案 1 :(得分:0)
如果您只想调用该对象并且只有一个实例,请使用static关键字。无论哪种方式,您都必须在使用之前为其分配值。
string[] keywords = new string[3];
3是阵列的预定长度。如果您需要可变长度,请使用List&lt; T&gt;。不过,这只是为了帮助你。你要做的最好的事情就是开始阅读一些书籍或教程。