Question

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

UPDATE

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;
Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top