我得到的错误在标题中。它与数组和我所拥有的for-loop有关。我试图将文本框中的字母存储在一个数组中,然后存储在一个会话中,然后在for循环中搜索这些字母,并检查数组中的字母是否等于来自txtbox的另一个字母。 好吧......希望你们中的一些人知道什么是错的。 (那里有一些挪威字母,但不要担心它们) 以下是错误代码:
Linje 30: protected void btnSjekkOrd_Click(object sender, EventArgs e)
Linje 31: {
Linje 32: for (int i=0; i < arrayOrd.Length; i++ )
Linje 33: {
Linje 34: if (txtBokstavSjekk.Text.Length == arrayOrd[i])
以下是所有代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
//Session
char [] arrayOrd;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["arrayOrd"] != null)
{
arrayOrd = (char[])Session["arrayOrd"];
}
}
protected void Page_Unload(object sender, EventArgs e)
{
Session["arrayOrd"] = arrayOrd;
}
protected void btnStart_Click(object sender, EventArgs e)
{
char[] arrayOrd = txtOrd.Text.ToCharArray();//Putter txtOrd i array
}
protected void btnSjekkOrd_Click(object sender, EventArgs e)
{
for (int i=0; i <= arrayOrd.Length; i++ )
{
if (txtBokstavSjekk.Text.Length == arrayOrd[i])
{
labRiktigBokstav.Text += arrayOrd[i];
}
else {
labFeilBokstaver.Text += "<b>" + arrayOrd[i] + "<b/>";
}
}
}
}
答案 0 :(得分:0)
在btnStart_Click中,您声明了数组arrayOrd
的另一个副本
事件处理程序的本地副本,在事件结束时不再可访问,然后销毁
删除声明类型char[]
,您的代码将引用全局变量
protected void btnStart_Click(object sender, EventArgs e)
{
arrayOrd = txtOrd.Text.ToCharArray();//Putter txtOrd i array
}
但是,您的代码仍然很弱,如果用户在开始按钮之前按下按钮btnSjekkOrd
,则arrayOrd仍然为空并且错误将再次出现
protected void btnSjekkOrd_Click(object sender, EventArgs e)
{
if(arrayOrd == null) return; // or message to press the start button
for (int i=0; i <= arrayOrd.Length; i++ )
....