我正在尝试学习 C#,因此我想用 C# 创建一些简单的应用程序。当我先创建用户然后创建宠物时,使用我放在所有者对象中的名称,我可以看到它在调试时循环了 IF 语句,然后在循环了 IF 语句之后,它还循环了 else 语句?如果不调试,它还会同时返回 if 和 else 语句。
我的主要方法
namespace Pet_Clinic
{
internal class Program
{
static void Main(string[] args)
{
Owner newOwner = new Owner();
Pet pet = new Pet();
bool running = true;
while (running)
{
Console.Clear();
Console.WriteLine("Pet Clinic Menu");
Console.WriteLine("");
Console.WriteLine("--------------------------");
Console.WriteLine("");
Console.WriteLine("1. Create customer");
Console.WriteLine("2. Add pet to customer");
Console.WriteLine("3. Get pets from customer.");
Console.WriteLine("5. Quit");
Console.WriteLine("");
Console.WriteLine("--------------------------");
Console.WriteLine("");
Console.Write("Pick an option: ");
int choice = int.Parse(Console.ReadLine());
switch (choice)
{
case 1:
Console.Write("Enter name of owner: ");
string belongsTo = Console.ReadLine();
Console.Write("Enter adress: ");
string ownerAddress = Console.ReadLine();
Console.Write("Enter email: ");
string ownerEmail = Console.ReadLine();
Console.Write("Enter phonenumber: ");
string ownerPhonenumber = Console.ReadLine();
newOwner.CreateOwner(belongsTo, ownerAddress, ownerEmail, ownerPhonenumber);
Console.Clear();
Console.WriteLine("Owner created successfully.");
Console.Write("Press enter to return to menu: ");
Console.ReadLine();
break;
case 2:
Console.WriteLine("Enter pet name:");
string petName = Console.ReadLine();
Console.WriteLine("Enter pet breed:");
string petBreed = Console.ReadLine();
Console.WriteLine("Enter pet age:");
int petAge = int.Parse(Console.ReadLine());
Console.WriteLine("Enter owner name:");
string ownerName = Console.ReadLine();
Owner owner = newOwner.FindOwnerByName(ownerName);
if (owner == null)
{
Console.WriteLine($"No owner with the name {ownerName} exists.");
}
else
{
pet.CreatePet(petName, petBreed, petAge, owner);
Console.WriteLine($"Pet {petName} added to owner {ownerName} successfully.");
}
Console.Write("Press enter to return to menu: ");
Console.ReadLine();
break;
case 3:
break;
case 4:
break;
case 5:
running = false;
break;
default:
Console.WriteLine("Invalid option.");
break;
}
}
}
}
}
我的主人班
namespace Pet_Clinic.Model
{
public class Owner
{
/* Fields */
public string belongsTo { get; set; }
public string Address { get; set; }
public string PhoneNumber { get; set; }
public string Email { get; set; }
/* Methods */
public override string ToString()
{
return $"{belongsTo} - {Address} - {PhoneNumber} - {Email}";
}
public List<Owner> owners = new List<Owner>();
public Owner()
{
// Initialize the owners list in the constructor
owners = new List<Owner>();
}
// Method to create the owner object
public void CreateOwner(string name, string address, string email, string phonenumber)
{
Owner newOwner = new Owner()
{
belongsTo = name,
Address = address,
Email = email,
PhoneNumber = phonenumber,
};
owners.Add(newOwner);
}
// Method to find the owner taking one parameter.
public Owner FindOwnerByName(string ownerName)
{
// Loop through the owners list and return the first owner that matches the ownerName
foreach (Owner owner in owners)
{
if (owner.belongsTo == ownerName)
{
return owner;
}
}
// If no matching owner is found, return null
return null;
}
}
}
我的宠物班
namespace Pet_Clinic.Model
{
/* Fields */
public class Pet
{
public string Name { get; set; }
public string Breed { get; set; }
public int Age { get; set; }
public Owner Owner { get; set; }
public List<Pet> petList = new List<Pet>();
/* Methods */
public override string ToString()
{
return $"Name: {Name} Breed: {Breed} Age: {Age} Owner: {Owner}";
}
// Method to create pet
public void CreatePet(string name, string breed, int age, Owner owner)
{
// Check if the owner exists in the owner list
if (!owner.owners.Contains(owner))
{
Console.WriteLine("Owner does not exist.");
return;
}
Pet newPet = new Pet
{
Name = name,
Breed = breed,
Age = age,
Owner = owner,
};
// Adds pet to list
petList.Add(newPet);
}
}
}
简短的回答是 not 同时击中 if 和 else 语句。
比较这部分输出
使用此代码
Console.WriteLine("Enter owner name:");
string ownerName = Console.ReadLine();
Owner owner = newOwner.FindOwnerByName(ownerName);
if (owner == null)
{
Console.WriteLine($"No owner with the name {ownerName} exists.");
}
else
{
pet.CreatePet(petName, petBreed, petAge, owner);
Console.WriteLine($"Pet {petName} added to owner {ownerName} successfully.");
}
这是因为所有者不在其所有者列表中。这与在 Main 中初始化的所有者列表 (newOwner) 不同。