<?xml version="1.0" encoding="us-ascii"?>
<ErrorDocumentation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ErrorName>CS0177</ErrorName>
  <Examples>
    <string>// cs0177-2.cs: The out parameter `f' must be assigned to before control leaves the current method
// Line: 5

class ClassMain {
	public static void test2 (int a, out float f)
	{
		// CS0177
		if (a == 5)
			return;

		f = 8.53F;
	}
}

</string>
    <string>// cs0177-3.cs: The out parameter `f' must be assigned to before control leaves the current method
// Line: 5

class C {
	public static void test3 (out float f)
	{
		try {
			f = 8.53F;
		} catch {
			return;
		}
	}
}

</string>
    <string>// cs0177-4.cs: The out parameter `f' must be assigned to before control leaves the current method
// Line: 5

class C {
	public static void test (int a, out float f)
	{
		do {
			// CS0177
			if (a == 8) {
				System.Console.WriteLine ("Hello");
				return;
			}
		} while (false);

		f = 1.3F;
		return;
	}
}

</string>
    <string>// cs0177-5.cs: The out parameter `a' must be assigned to before control leaves the current method
// Line: 21

using System;

class OutputParam
{
    public static void Main(string[] args)
    {
	 int a;
	 Method(out a);
	 Console.WriteLine(a);
    }

    public static void Method(out int a)
    {
	int b;

	try {
	    b = 5;
	} catch (Exception) { return; }

	a = b;
    }
}
</string>
    <string>// cs0177-6.cs: The out parameter `a' must be assigned to before control leaves the current method
// Line: 21

using System;

class OutputParam
{
    public static void Main(string[] args)
    {
	 int a;
	 Method(out a);
	 Console.WriteLine(a);
    }

    public static void Method(out int a)
    {
	int b;

	try {
	    b = 5;
	    return;
	} catch (Exception) { throw; }

	a = b;
    }
}
</string>
    <string>// cs0177-7.cs: The out parameter `a' must be assigned to before control leaves the current method
// Line: 6

class Foo {
	static void test39 (out int a)
	{
		int x_0 = 0;
		int ll_1 = 0;
        
		switch (0) {
		default:
			switch (x_0) {
			default:
				if (ll_1 == 0)
					break;
				else
					goto k_1;
			}
			a = 5;
			break;
		k_1:
			break;
		}
	}

	static void Main () { int x; test39 (out x); }
}

</string>
    <string>// cs0177-8.cs: The out parameter `parameterModifiers' must be assigned to before control leaves the current method
// Line: 17

using System;
using System.Reflection;

/// &lt;summary&gt;
/// MS does not report CS0177 for structs:
/// https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=304489
/// &lt;/summary&gt;
class Program
{
	bool GetArgsForCall (object [] originalArgs, out ParameterModifier parameterModifiers)
	{
		int countOfArgs = originalArgs.Length;
		if (countOfArgs == 0)
			return false;

		parameterModifiers = new ParameterModifier (countOfArgs);
		return true;
	}
}
</string>
    <string>// CS0177: The out parameter `output' must be assigned to before control leaves the current method
// Line: 10

class Test
{
	delegate T Creator&lt;T&gt; ();

	static bool TryAction&lt;T&gt; (Creator&lt;T&gt; creator, out T output) where T : struct
	{
		return false;
	}
}
</string>
    <string>// cs0177.cs: The out parameter `display' must be assigned to before control leaves the current method
// Line: 5

class ClassMain {
        void Error(out bool display) {
        }
    
        public static void Main() {
        }
}

</string>
  </Examples>
</ErrorDocumentation>