如果数组有一些未设置的值,如何设置返回值

时间:2011-07-20 06:26:21

标签: c# c#-2.0

我有这样的代码

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以外的返回值和整数值

3 个答案:

答案 0 :(得分:2)

只是放置额外的退货声明,或者我错过了什么?

try  
{    
    for (int i=0; i<this.Count; i++)    
    {
        if (guid.Equals(this[i].Guid))
        {          
              return i;
        }
    }
    return somethingElseHere;
 }

答案 1 :(得分:1)

在for循环检查之后

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

错误有多个整数值是非常不清楚的。