C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
First: In Main, 3 local bool variables are declared. These 3 variables are not initialized.
BoolThen: Those same bool variable locations on the stack are initialized to the false Boolean literal in the TestString method called next.
And: In the loop in TestString, if certain characters occur in the string, the bool parameters are assigned true.
True, FalseInfo: TestString() can be used in programs to find multiple properties of the string in a single pass through the string's characters.
C# program that uses out Boolean parameters
using System;
class Program
{
static void Main()
{
bool period; // Used as out parameter.
bool comma;
bool semicolon;
const string value = "has period, comma."; // Used as input string.
TestString(value, out period, out comma, out semicolon);
Console.WriteLine(value); // Display value.
Console.Write("period: "); // Display labels and bools.
Console.WriteLine(period);
Console.Write("comma: ");
Console.WriteLine(comma);
Console.Write("semicolon: ");
Console.WriteLine(semicolon);
}
static void TestString(string value,
out bool period,
out bool comma,
out bool semicolon)
{
// Assign all out parameters to false.
period = comma = semicolon = false;
for (int i = 0; i < value.Length; i++)
{
switch (value[i])
{
case '.':
{
period = true; // Set out parameter.
break;
}
case ',':
{
comma = true; // Set out parameter.
break;
}
case ';':
{
semicolon = true; // Set out parameter.
break;
}
}
}
}
}
Output
has period, comma.
period: True
comma: True
semicolon: False
Warning: This syntax will not work with older versions of the .NET Framework. So be sure to be targeting .NET 4.7 or later.
C# program that uses inline out parameter syntax
using System;
class Program
{
static bool Test(out int size)
{
// This method has an out parameter.
size = 1000;
return size >= 1000;
}
static void Main()
{
// Declare out parameter directly inside method call.
if (Test(out int size))
{
Console.WriteLine(size);
}
}
}
Output
1000
Discard: The underscore char is a "discard name." The parameter exists, but is not referenced, and does not need a name.
C# program that shows out, discard name
using System;
class Program
{
static void Test(out int size, out string name)
{
size = 10;
name = "bird";
}
static void Main()
{
// We do not need the out int, so use an underscore name (discard name).
Test(out _, out string name);
Console.WriteLine("NAME: {0}", name);
}
}
Output
NAME: bird
Tip: Out parameters are often most useful for value types such as bool, int or short.
Tip 2: There is no other easy way to return multiple values without allocating an array or object.
Multiple Return Values