goto C# with Example



goto C# with Example

goto can be used to jump to a specific line inside the code, specified by a label. 
goto as a: 
Label: 
void InfiniteHello() 
{ 
sayHello: 
Console.WriteLine("Hello!"); 
goto sayHello; 
} 
Live Demo on .NET Fiddle 
Case statement: 
enum Permissions { Read, Write }; 
switch (GetRequestedPermission()) 
{ 
case Permissions.Read: 
GrantReadAccess(); 
break; 
case Permissions.Write: 
GrantWriteAccess(); 
goto case Permissions.Read; //People with write access also get read 
} 
Live Demo on .NET Fiddle 
This is particularly useful in executing multiple behaviors in a switch statement, as C# does not support fall-through 
case blocks. 
Exception Retry 
var exCount = 0; 
retry: 
try 
{ 
//Do  work 
} 
catch (IOException) 
{ 
exCount++; 
if (exCount < 3) 
{ 
Thread.Sleep(100); 
 

goto retry; 
} 
throw; 
} 
Live Demo on .NET Fiddle 
Similar to many languages, use of goto keyword is discouraged except the cases below. 
Valid usages of goto which apply to C#: 
Fall-through case in switch statement. 
Multi-level break. LINQ can often be used instead, but it usually has worse performance. 
Resource deallocation when working with unwrapped low-level objects. In C#, low-level objects should 
usually be wrapped in separate classes. 
Finite state machines, for example, parsers; used internally by compiler generated async/await state 
machines. 

0 Comment's

Comment Form

Submit Comment