Labels and GOTOs are considered bad practice and as far as I know there is no reason to use it in C#.
What is the use of labels in C#?
There is nothing wrong with labels and goto's in themselves. The problem is that people tend to abuse them which does create a problem.
Typical use of a label
OperationStart:
if ( !TrySomeOperation() ) {
if ( MaybeFixOperation() ) {
goto OperationStart;
}
}
You'd need to make some assertions that you couldn't hit an infitite loop, but given a reasonable set of guarantees there's nothing inherently wrong with this code.