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)を作成し、メインフォームで宣言したいのですが、このコードは機能しません:

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)
{
}

私は何をすべきか?

4

2 に答える 2

1

Stackoverflow へようこそ。KeyWord クラスのインスタンスを取得し、その Keywords 文字列配列をString[] keywordsMainform.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

オブジェクトを呼び出すだけで、そのインスタンスを 1 つだけ持つ場合は、static キーワードを使用します。いずれにしても、使用する前に値を割り当てる必要があります。

string[] keywords = new string[3];

3 は配列の所定の長さです。可変長が必要な場合は、List<T> を使用します。ただし、これは今のところのみ役立ちます。あなたにとって最善のことは、いくつかの本やチュートリアルを読み始めることです.

于 2013-02-28T05:11:11.790 に答える