【问题标题】:How to connect string from my class to form如何将我班级的字符串连接到表格
【发布时间】:2013-02-28 04:56:12
【问题描述】:

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

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;
    }
}

错误提示:

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

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

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

我该怎么办?

【问题讨论】:

  • 按照编译器的说明初始化变量:string[] keywords = null;
  • @ spajce sir 到 db @ abatishchev sir 的连接字符串仍然存在错误,指向 if (keywords[i] == token) 说 Operator = 不能应用于 'char' 和 ' 类型的操作数string' 和使用未分配的局部变量'keywords'

标签: c# winforms compiler-errors


【解决方案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 //new editor.KeyWord();时完全限定命名空间

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

【讨论】:

  • 谢谢先生,但仍然存在错误:1. 使用未分配的局部变量 'keywords' 2. 找不到类型或命名空间名称 'KeyWords'
  • 欢迎您,但声音无法解决,错误信息是什么?
  • 我删除了命名空间并将其更改为命名空间 frmMain(也将其第二次永久删除),就像您所说的先生并尝试代码:var keyboardCls = new frmMain.KeyWord(); String[] 关键字 = keyboardCls.keywords;但它说>>> frmMain.KeyWord.keywords 由于其保护级别而无法访问。
  • 我什至尝试将类更改为命名空间 KeyWord 但同样的事情发生了: KeyWord.KeyWord.keywords is inaccessible due to its protection level 。虽然好的是关键字字符串现在已连接到类中......但仍然有一个错误:(
【解决方案2】:

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

string[] keywords = new string[3];

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

【讨论】:

  • "但是我想为关键字创建单独的类 (KeyWord.cs) 并在 mainform 中声明它"
  • 就像我说的,“如果您只想调用对象并且只有一个实例,请使用 static 关键字。”这也适用于将它放在另一个类中。您要么需要将其设为公共静态,要么创建对象的新实例。
  • 你能告诉我更多关于那个先生的信息吗?或代码示例...关于我应该怎么做。真的很抱歉先生新手...
猜你喜欢
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
相关资源
最近更新 更多