2013-02-26 11 views
4

사용자가 입력 한 문자열의 첫 번째 문자를 표시하는 메시지 상자를 표시하고 사용자가 메시지 상자의 확인 버튼을 클릭하면 다음 문자가 메시지에서 팝업됩니다 상자에 도달 할 때까지문자에서 문자열로 변환 할 수 없습니다

이 프로그램을 만들었지 만 분명한 이유 때문에 다음 오류가 발생했습니다 : " '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]); 
      } 
     } 
    } 
} 
+2

C#과 C++의 차이점에 대한 Consder 읽기 - 언어 중 하나에서 0 개의 종료 문자열이 있고 다른 하나는 종료 문자열이 아닙니다. –

+0

이 MessageBox.Show를 시도해보십시오 (str [i] .ToString()); –

답변

4

사용이 : 당신이 문자열에있는 문자를 변환 할 필요가 있으므로

foreach (char c in stringTxt.Text) 
{ 
    MessageBox.Show(c.ToString()); 
} 

MessageBox.Show()하는 string 매개 변수가 필요합니다.

루프 :

for (int i = 0; str[i] != null; i++) 

IndexOutOfRangeException를 발생시킵니다. .NET의 문자열은 C과 같은 문자 배열이 아닙니다. 이들은 실제로 널로 종료되지만 해당 인덱스 (Length과 같습니다)를 사용하여 널 문자에 액세스 할 수 없습니다. CLR은 인덱스를 확인하고 문자열 (0 ~ Length-1)의 유효한 인덱스 범위를 벗어나기 때문에 예외가 throw됩니다.

+0

감사합니다! 이것은 완벽하게 완벽하게 작동했습니다! –

2

MessageBox.Show()은 문자열을 받고 char 개체를 전달합니다.

MessageBox.Show(str[i].ToString()); 
+0

시도했습니다 이미 –

+0

그것은이 오류를 제공합니다 : '메서드 그룹'에서 '문자열'로 변환 할 수 없습니다 –

+1

정확히'stringTxt' 무엇입니까? 제발, 전체 소스 코드를 제공하십시오. –

0

이 당신의 라인을 교체 :

for (int i = 0; str[i] != null; i++) 
{ 
    MessageBox.Show(str[i].ToString()); 
} 

MessageBox.Show()은 문자열 값을 필요로하지만 당신은 문자를 전달하는 다음을 수행합니다.

관련 문제