将“ byteA”声明为var时出现错误。如何解决?

时间:2019-01-20 07:47:40

标签: c#

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

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

   }

2 个答案:

答案 0 :(得分:5)

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

如果在声明它时未为其分配类型值(匿名类型也视为类型),则编译器将不知道它是什么类型,因此将不编译代码。

这也是为什么您无法执行var x = null;(但是您可以执行var y = (string)null;)的原因。

您可能可以使您的代码与var byteA = new byte[];一起工作(您说您需要一个字节数组)-或至少可以进行编译(我不知道AddBytes函数的作用,因此您可能需要其他类型,也许是IList<type>?)

答案 1 :(得分:0)

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