2010-07-10 3 views
1

문제가 있습니다. 내 프로그램을 실행하면 오류, 특히 CS1023 오류가 발생합니다. 내가 성명서 안에 선언문을 가지고 있기 때문에 그런 것 같지만, 코드를 작성하는 다른 방법을 모르겠습니다. 때때로 C#은 나를 귀찮게합니다. 왜냐하면 C++에서는 비슷한 것들로 도망 갈 수 있습니다 ... 어쨌든, 여기 코드가 있습니다. 누군가 나에게 설명해 주시면 고맙겠습니다. Error Message LinkC# GetBytes, WriteBytes 및 Embedded 문 오류

void BtnTotalSeasonsClick(object sender, EventArgs e) 
{ 
    using (var stream = new FileStream(drvFile, FileMode.Open, FileAccess.ReadWrite)) 
    Byte[] bytes = System.Text.ASCIIEncoding.GetBytes(txtTotalSeasons.Text); 
    { 
     stream.Position = 4; 
     Stream.WriteByte(0xCD); 
    } 
} 

는 CS0120 오류로 코드를 수정했습니다.

 { 
using (var stream = new FileStream(drvFile, FileMode.Open, FileAccess.ReadWrite)) 
{ 
Byte[] bytes = System.Text.ASCIIEncoding.GetBytes(txtTotalSeasons.Text); 
stream.Position = 4; 
Stream.WriteByte(0xCD); 
} 
    } 

답변

2

당신이 붙여 넣은 코드 분명히 아무 문제가 없습니다. 아마 오류가이 이상 다른 곳이며, 컴파일러는 혼란스러워지고?

아, 코드를 변경 했으니 까.

외부의 Byte[] 배열을using 블록으로 지정하려고합니다. 선언의 범위는 단 한 줄이므로 논리 오류가 발생하고 컴파일러는 컴파일 타임 오류로 캐치합니다.

컴파일러는 다음과 같이 코드를 해석된다

using (var stream = new FileStream(drvFile, FileMode.Open, FileAccess.ReadWrite)) 
{ 
    Byte[] bytes = System.Text.ASCIIEncoding.GetBytes(txtTotalSeasons.Text); 
} 

{   
    stream.Position = 4; 
    stream.WriteByte(0xCD); 
} 

는 괄호 안에 Byte[]를 이동, 그것을 수정하거나 using 블록 외부하려면

using (var stream = new FileStream(drvFile, FileMode.Open, FileAccess.ReadWrite)) 
{ 
    Byte[] bytes = System.Text.ASCIIEncoding.GetBytes(txtTotalSeasons.Text); 
    stream.Position = 4; 
    stream.WriteByte(0xCD); 
} 

- 또는

Byte[] bytes = System.Text.ASCIIEncoding.GetBytes(txtTotalSeasons.Text); 

using (var stream = new FileStream(drvFile, FileMode.Open, FileAccess.ReadWrite)) 
{ 
    stream.Position = 4; 
    stream.WriteByte(0xCD); 
} 

개인적으로 저는 컴파일러가 짜증을내는 것을 좋아합니다. 다시 말하면 런타임 오류로부터 나를 구할 수 있기 때문이다.

+0

고마워, 고칠 수있다. 이제 또 다른 오류 (CS0120)가 발생했습니다. 그래서 해결할 것입니다. 그래도 고마워. –

+0

인스턴스 메서드 호출에 인스턴스가 필요합니까? 우리는 여기에서 도울 수 있습니다! – codekaizen

+0

글쎄, 그걸 도울 수 있니? 나는 네 번째 오류 하나를 얻는다. 위의 코드 행과 6 번째 행 하나는 CS0120 오류입니다. –