我想要一个消息框弹出显示从用户通过文本框接受的字符串的第一个字符,当用户点击消息框的确定按钮时,消息框中会弹出下一个字符,直到达到null.
我创建了这个程序,但由于显而易见的原因,它给出了以下错误:
“无法从’char’转换为’string’”
请提出一些改变.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace loop_Message
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void submit_Click(object sender, EventArgs e)
{
string str;
str = stringTxt.Text;
for (int i = 0; str[i] != null; i++)
{
MessageBox.Show(str[i]);
}
}
}
}
解决方法:
用这个:
foreach (char c in stringTxt.Text)
{
MessageBox.Show(c.ToString());
}
MessageBox.Show()需要一个字符串参数,因此您需要将字符转换为字符串.
你的循环:
for (int i = 0; str[i] != null; i++)
引发IndexOutOfRangeException. .NET中的字符串不是像C中的字符数组.它们实际上是以null结尾的,但是您不能通过使用其索引(等于Length)来访问空字符. CLR检查索引,并且因为它超出了字符串(0到Length-1)的有效索引范围,抛出异常.