在将“ 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);
}
答案 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个变量是整数。