我有这样的代码
int rpindex = allObjects.Find(new Guid(policyGuid));
if (rpindex != -1)
{
rp = (ResourcePolicy)allObjects.GetAt(rpindex);
}
这是Find方法
public virtual int Find(Guid guid)
{
try
{
for (int i=0; i<this.Count; i++)
{
if (guid.Equals(this[i].Guid))
{
return i;
}
}
}
catch(System.Exception exception)
{
SpoDebug.DebugTraceSevere(func, "Exception Occurred: " + exception.ToString() );
}
SpoDebug.DebugTraceVerbose(func, "no find. guid=" + guid.ToString());
return -1;
}
截至目前,现有函数Find()结果为-1或某个整数值[i]。 -1值将出现在两种情况下,即如果输入为空[空值]并且如果输入是某个值,该值不在数据库或当前列表中,我需要在此更改。这意味着如果输入如果find()为空或null,那么它只返回-1,否则如果输入有一些值并且没有加工那么它就会返回返回-2.SO应该有三个结果,一个是-1秒是-2第三是整数值,任何人都可以在这里指导我 如果我添加了其他循环,我不知道我可以在这里使用除-1以外的返回值和整数值
答案 0 :(得分:2)
只是放置额外的退货声明,或者我错过了什么?
即
try
{
for (int i=0; i<this.Count; i++)
{
if (guid.Equals(this[i].Guid))
{
return i;
}
}
return somethingElseHere;
}
答案 1 :(得分:1)
if(i == this.Count) //i reached the end of the loop but no matches found
{
return -2;
}
答案 2 :(得分:1)
我认为在方法开始之后,如果列表为空则抛出异常会更具可读性:
if (this.Count==0)
throw new InvalidArgumentException();
//rest as before
错误有多个整数值是非常不清楚的。