【问题标题】:C# GetBytes, WriteBytes and Embedded Statement ErrorC# GetBytes、WriteBytes 和嵌入式语句错误
【发布时间】:2011-03-14 08:17:00
【问题描述】:

我有问题。当我运行我的程序时,它会出现一个错误,特别是 CS1023 错误。我想这是因为我在语句中有一个声明,但我不知道如何编写代码。有时 C# 让我烦恼,因为在 C++ 中我可以摆脱类似的事情......无论如何,这是代码。如果有人可以向我解释,我将不胜感激。 Error Message Link

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

【问题讨论】:

    标签: c# stream byte


    【解决方案1】:

    您粘贴的代码显然没有任何问题。也许错误在此之上的其他地方,编译器感到困惑?

    啊,我看到你已经更改了代码。

    这里的问题是您在 intended using 块之外声明了 Byte[] 数组。由于声明的范围只有一行,这构成了一个逻辑错误,编译器会用编译时错误捕获它。

    编译器会这样解释你的代码:

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

    就我个人而言,我喜欢被编译器惹恼,因为它让我免于运行时错误。

    【讨论】:

    • 谢谢,解决了。现在又出现了另一个错误(CS0120),所以我会修复它。不过还是谢谢。
    • 实例方法调用需要实例吗?我们也可以在这里提供帮助!
    • 嗯,你也能帮忙吗?我得到两个错误,一个在第四个。上面一行代码,以及第 6 行代码,都是 CS0120 错误。
    • "Stream.WriteByte(0xCD);" - 需要是“stream.WriteByte(0xCD);” C#区分大小写,“Stream”指的是类,而不是对象,即“stream”。
    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2017-07-22
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多