1

我一直在程序中处理这个字符串代码:

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)并在主窗体中声明它,但这段代码不起作用:

关键字.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;
    }
}

错误说:

使用未分配的局部变量“关键字”:

请注意,此代码在 mainform 中处于无效状态:

private void TextChangedEvent(object sender, EventArgs e)
{
}

我该怎么办?

4

2 回答 2

1

欢迎使用 Stackoverflow,您需要获取 KeyWord 类的实例,然后将其关键字字符串数组分配给您String[] keywords在 Mainform.cs 中本地声明的,例如:

     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 //<- 删除命名空间或使其与frmMain.cs的命名空间相同或在实例化时完全限定命名空间new editor.KeyWord();

我已经编辑了我的代码以显示最后一个选项。此外,如果 KeyWord.cs 与 MainForm.cs 位于不同的项目中,则您需要添加参考。

于 2013-02-28T05:02:41.677 回答
0

如果您只想调用对象并且只有一个实例,请使用 static 关键字。无论哪种方式,您都必须在使用它之前为其分配一个值。

string[] keywords = new string[3];

3 是数组的预定长度。如果您需要可变长度,请使用 List<T>。不过,这只是暂时对您有所帮助。你最好的办法是开始阅读一些书籍或教程。

于 2013-02-28T05:11:11.790 回答