Best practice for using goto
问题 Is it right to use goto in this code? Are there any alternatives? return ExecuteReader(cmd, reader => { List<BEPartnership> partnerhip = null; //Partnership if (!((SqlDataReader) reader).HasRows) goto exit; partnerhip = new List<BEPartnership>{new BEPartnership().GetFromReader(reader)}; //Customers if (!reader.NextResult() && !((SqlDataReader) reader).HasRows) goto exit; foreach (BEPartnership p in partnerhip) p.Partner = new BECustomer().GetFromReader(reader); //Contracts if (!reader