Beoordeel de oplossing voor de uitdaging 'do versus while' activiteit.
In de volgende voorbeelden moet een do codeblok worden gebruikt, omdat u weet dat u het codeblok ten minste één keer moet uitvoeren. U kunt ook een while functie gebruiken om hetzelfde resultaat te bereiken. Sommige ontwikkelaars denken dat de logica van een while code beter leesbaar wordt. Als dat voor u het geval is, kunt u ervoor kiezen om een while te implementeren. In dit geval moet u er rekening mee houden dat de meeste code-compilers uw code voor u optimaliseren door de iteratie-instructie te converteren naar een do-while.
Project 1 code
De volgende code is één mogelijke oplossing voor uitdagingsproject 1 uit de vorige les.
De code maakt gebruik van een do instructie omdat het codeblok ten minste één keer moet worden uitgevoerd. U kunt ook een while functie gebruiken om hetzelfde resultaat te bereiken. Sommige ontwikkelaars kunnen het gevoel hebben dat de logica van een while code beter leesbaar wordt. Als dat het geval is, kunt u hier een while instructie implementeren.
string? readResult;
string valueEntered = "";
int numValue = 0;
bool validNumber = false;
Console.WriteLine("Enter an integer value between 5 and 10");
do
{
readResult = Console.ReadLine();
if (readResult != null)
{
valueEntered = readResult;
}
validNumber = int.TryParse(valueEntered, out numValue);
if (validNumber == true)
{
if (numValue <= 5 || numValue >= 10)
{
validNumber = false;
Console.WriteLine($"You entered {numValue}. Please enter a number between 5 and 10.");
}
}
else
{
Console.WriteLine("Sorry, you entered an invalid number, please try again");
}
} while (validNumber == false);
Console.WriteLine($"Your input value ({numValue}) has been accepted.");
readResult = Console.ReadLine();
Project 2 code
De volgende code is één mogelijke oplossing voor uitdagingsproject 2 uit de vorige les.
De code maakt gebruik van een do instructie omdat het codeblok ten minste één keer moet worden uitgevoerd. U kunt ook een while functie gebruiken om hetzelfde resultaat te bereiken. Sommige ontwikkelaars kunnen het gevoel hebben dat de logica van een while code beter leesbaar wordt. Als dat het geval is, kunt u hier een while instructie implementeren.
string? readResult;
string roleName = "";
bool validEntry = false;
do
{
Console.WriteLine("Enter your role name (Administrator, Manager, or User)");
readResult = Console.ReadLine();
if (readResult != null)
{
roleName = readResult.Trim();
}
if (roleName.ToLower() == "administrator" || roleName.ToLower() == "manager" || roleName.ToLower() == "user")
{
validEntry = true;
}
else
{
Console.Write($"The role name that you entered, \"{roleName}\" is not valid. ");
}
} while (validEntry == false);
Console.WriteLine($"Your input value ({roleName}) has been accepted.");
readResult = Console.ReadLine();
Project 3 code
De volgende code is één mogelijke oplossing voor uitdagingsproject 3 uit de vorige les.
De code maakt gebruik van een for instructie voor de buitenste lus omdat u de waarde die is toegewezen aan een foreach-iteratievariabele niet kunt wijzigen. U kunt dit omzeilen door een extra tekenreeksvariabele in de foreach lus te declareren, maar vervolgens voegt u ongewenste complexiteit toe aan uw codelogica. Met andere woorden, het gebruik van de iteratie-instructie foreach (string myString in myStrings) en vervolgens het proberen te verwerken van de variabele myString genereert een compilatiefout.
De code gebruikt een while instructie voor de binnenste lus omdat, afhankelijk van de waarde van de gegevensreeks, het codeblok mogelijk niet wordt uitgevoerd (wanneer de tekenreeks geen punt bevat). Gebruik geen do instructie in situaties waarin het iteratieblok mogelijk niet hoeft te worden uitgevoerd.
string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };
int stringsCount = myStrings.Length;
string myString = "";
int periodLocation = 0;
for (int i = 0; i < stringsCount; i++)
{
myString = myStrings[i];
periodLocation = myString.IndexOf(".");
string mySentence;
// extract sentences from each string and display them one at a time
while (periodLocation != -1)
{
// first sentence is the string value to the left of the period location
mySentence = myString.Remove(periodLocation);
// the remainder of myString is the string value to the right of the location
myString = myString.Substring(periodLocation + 1);
// remove any leading white-space from myString
myString = myString.TrimStart();
// update the comma location and increment the counter
periodLocation = myString.IndexOf(".");
Console.WriteLine(mySentence);
}
mySentence = myString.Trim();
Console.WriteLine(mySentence);
}
Als u bent geslaagd, gefeliciteerd! Als u problemen ondervindt, neemt u de tijd om de oplossing te controleren en probeert u te begrijpen hoe deze werkt.