C# 我在声明“时出错”;byteA“;作为变量,如何修复它?

C# 我在声明“时出错”;byteA“;作为变量,如何修复它?,c#,C#,将“byteA”声明为变量时出错。我正在尝试使用字节数组打印发票 private void btn_close_bill_Click(object sender, EventArgs e) { PrinterUtility.EscPosEpsonCommands.EscPosEpson obj = new PrinterUtility.EscPosEpsonCommands.EscPosEpson(); var byteA; byt

将“byteA”声明为变量时出错。我正在尝试使用字节数组打印发票

    private void btn_close_bill_Click(object sender, EventArgs e)
    {
        PrinterUtility.EscPosEpsonCommands.EscPosEpson obj = new PrinterUtility.EscPosEpsonCommands.EscPosEpson();
        var byteA;
        byteA = PrintExtensions.AddBytes(byteA, Encoding.ASCII.GetBytes("Name\n"));
        byteA = PrintExtensions.AddBytes(byteA, obj.CharSize.DoubleWidth4());
        byteA = PrintExtensions.AddBytes(byteA, Encoding.ASCII.GetBytes("Address\n"));
        byteA = PrintExtensions.AddBytes(byteA, obj.CharSize.DoubleWidth2());
        byteA = PrintExtensions.AddBytes(byteA, Encoding.ASCII.GetBytes("TP Number\n"));
        byteA = PrintExtensions.AddBytes(byteA, obj.CharSize.DoubleWidth2());
        PrinterUtility.PrintExtensions.Print(byteA, Foodcity_Management_System.Properties.Settings.Default.PrinterPath);

   }

使用
var
关键字声明变量时,必须在同一代码行中设置它的值,以便编译器可以推断它的类型

如果在声明它时没有为它指定类型化值(匿名类型也算作类型),编译器将无法知道它是什么类型,因此不会编译代码

这也是为什么不能执行
var x=null(但您可以执行
vary=(string)null;


您可能可以让您的代码使用
var byteA=new byte[]
(您说您需要一个字节数组)-或者至少要编译(我不知道AddBytes函数的功能是什么,所以您可能需要不同的类型,可能是
IList
?)

当使用
var
关键字声明变量时,您必须在同一代码行中设置它的值,以便编译器可以推断它的类型

如果在声明它时没有为它指定类型化值(匿名类型也算作类型),编译器将无法知道它是什么类型,因此不会编译代码

这也是为什么不能执行
var x=null(但您可以执行
vary=(string)null;


您可能可以让您的代码使用
var byteA=new byte[]
(你说你需要一个字节数组)-或者至少要编译(我不知道AddBytes函数做什么,所以你可能需要一个不同的类型,也许是一个
IList
?)

当使用关键字var时,你需要给它一个初始值,这样编译器就知道它是什么类型了,例如:不要说int number;我们可以使用var number=0。这两个变量是整数。

使用关键字var时,需要给它一个初始值,以便编译器知道它是什么类型,例如:不要说int number;我们可以使用var number=0。这两个变量都是整数。

var
只能在赋值时使用。否则,编译器无法确定应使用的类型。因此,您的声明
var byteA
是非法的,但您可以这样做:
var byteA=PrintExtensions.AddBytes(byteA,Encoding.ASCII.GetBytes(“Name\n”)
unfprtuntelly这将是非法的,因为您在调用中使用节点定义的
byteA
值。阅读
var(C#关键字)
上的文档。错误是因为C#是一种类型化语言,在声明变量时需要声明类型,或者编译器需要能够从代码(如
var a=5
@Julo)中推断类型。不建议将答案作为注释发布,请发布答案。我相信是的correct@opewix对于这样一个简单而正确的答案,我已经有过很多反对票和负面评论,因此我不喜欢在没有正确和充分研究的情况下发布这样一个答案。此外,这个问题还有另一个问题。(请参见编辑我的第一条评论。)
var
只能在赋值时使用。否则,编译器无法确定应使用的类型。因此,您的声明
var byteA
是非法的,但您可以这样做:
var byteA=PrintExtensions.AddBytes(byteA,Encoding.ASCII.GetBytes(“Name\n”)
unfprtuntelly这将是非法的,因为您在调用中使用节点定义的
byteA
值。阅读
var(C#关键字)
上的文档。错误是因为C#是一种类型化语言,在声明变量时需要声明类型,或者编译器需要能够从代码(如
var a=5
@Julo)中推断类型。不建议将答案作为注释发布,请发布答案。我相信是的correct@opewix对于这样一个简单而正确的答案,我已经有过很多反对票和负面评论,因此我不喜欢在没有正确和充分研究的情况下发布这样一个答案。此外,这个问题还有另一个问题。(请参阅编辑我的第一条评论。)仅将其赋值为0不会使其类型为
byte
。您可以执行
var byteA=(字节)0
但是,您也可以首先显式声明类型。简单地为其赋值0不会使其成为type
byte
。您可以执行
var byteA=(字节)0
但是你最好首先明确声明类型。快速的google搜索表明这个函数使用字节数组,所以这个答案可能是正确的
var byteA=新字节[0]快速谷歌搜索表明此函数采用字节数组,因此此答案可能是正确的
var byteA=新字节[0]