But isn't false the default value of bool[ean]s?
For fields (instance variables and static variables), yes.
But local variables don't have default values, regardless of their type. They have to be definitely assigned before they're read.
题
With this code:
bool successfulSend;
const string quote = "\"";
string keepPrinterOn = string.Format("! U1 setvar {0}power.dtr_power_off{0} {0}off{0}", quote);
string shutPrinterOff = string.Format("! U1 setvar {0}power.dtr_power_off{0} {0}on{0}", quote);
string advanceToBlackBar = string.Format("! U1 setvar {0}media.sense_mode{0} {0}bar{0}", quote);
string advanceToGap = string.Format("! U1 setvar {0}media.sense_mode{0} {0}gap{0}", quote);
if (radbtnBar.Checked)
{
successfulSend = SendCommandToPrinter(advanceToBlackBar);
}
else if (radbtnGap.Checked)
{
successfulSend = SendCommandToPrinter(advanceToGap);
}
if (successfulSend)
{
MessageBox.Show("label type command successfully sent");
}
I get, "Use of unassigned local variable 'successfulSend'"
So I have to change the bool declaration to:
bool successfulSend = false;
...to get it to compile/run. But isn't false the default value of bool[ean]s? Why does the default value have to be explicitly specified?
There is no complaint with this code:
public bool SendCommandToPrinter(string cmd)
{
bool success; // init'd to false by default
try
{
SerialPort serialPort = new SerialPort();
serialPort.BaudRate = 19200;
serialPort.Handshake = Handshake.XOnXOff;
serialPort.Open();
serialPort.Write(cmd);
serialPort.Close();
success = true;
}
catch // may not need a try/catch block, as success defaults to false
{
success = false;
}
return success;
}
This compiles:
bool success;
SerialPort serialPort = new SerialPort();
serialPort.BaudRate = 19200;
serialPort.Handshake = Handshake.XOnXOff;
serialPort.Open();
serialPort.Write(cmd);
serialPort.Close();
success = true;
return success;
解决方案
But isn't false the default value of bool[ean]s?
For fields (instance variables and static variables), yes.
But local variables don't have default values, regardless of their type. They have to be definitely assigned before they're read.