class Program { public static void Main() { TimeSpan timeSpan; Foo foo; Bar bar; //Baz baz; TryTimeSpan(out timeSpan); TryFoo(out foo); TryBar(out bar); //TryBaz(out baz); Console.WriteLine(timeSpan); Console.WriteLine(foo); Console.WriteLine(bar); } private static bool TryTimeSpan(out TimeSpan timeSpan) { // no compile error! return false; } private static bool TryFoo(out Foo foo) { return false; } private static bool TryBar(out Bar bar) { return false; } /* private static bool TryBaz(out Baz baz) { // compile error, baz not assigned return false; } */ } struct Foo { } struct Bar { public TimeSpan TimeSpan { get; set; } } struct Baz { public int Int { get; set; } }