我有一个有一个叫做工号的工作类。我希望这个值在我创建它的实例时不允许重复。我正在尝试的是在for循环中执行它并使用直接输入的内容检查过去对象的值但我不相信这将准确地确定该数字是否已被使用过。它也不会实际比较,因为我不会在
之后启动实例Job[] jobs = new Job[3];
//take user input, construct Job and save to array
for (int i = 0; i < 3; i++)
{
Console.WriteLine("Enter job number");
int num = Convert.ToInt32(Console.ReadLine());
while(num == jobs[i-1].GetHashCode()) // get hash code just returns job number
{
Console.WriteLine("Sorry, the job number " + num + "is a duplicate. \nPlease reenter: ");
num = Convert.ToInt32(Console.ReadLine());
}
jobs[i] = new Job(num, name, description, hours);
}
我真的不知道还能做什么我想我可以保存输入到数组中的每个num值并检查这种方式但是有更优雅的方法来检查输入的传递值吗?
答案 0 :(得分:1)
因为这是一个我不想改变程序格式的课程,所以我确实提出了这个简单的解决方案。
int[] nums = new int[3];
for (int i = 0; i < 3; i++)
Console.WriteLine("Enter job number");
int num = Convert.ToInt32(Console.ReadLine());
while (nums.Contains(num))
{
Console.WriteLine("Sorry, the job number " + num + " is a duplicate. \nPlease reenter: ");
num = Convert.ToInt32(Console.ReadLine());
}
nums[i] = num;
答案 1 :(得分:0)
我的一般建议是不要处理这个问题。你有没有机会只添加一个进程内数据库,它可以将一个正在运行的JobID作为主表的主键吗?它可以做唯一检查,自动值更可靠。并且抵抗种族条件。您只需要INSERT OUTPUT语法。
如果您不能使用别人的代码来执行此操作,则需要考虑很多事项。