Как установить возвращаемое значение, если массив имеет какое-то значение, которое не установлено - PullRequest
0 голосов
/ 20 июля 2011

У меня есть такой код

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 или некоторое целочисленное значение [я].Значение -1 будет приходить в двух ситуациях, то есть если вход пуст [значение NULL] и если входное значение является некоторым значением, которого нет в базе данных или в текущем списке, мне нужно изменить здесь. Это означает, что если входto Find () пусто или равно нулю, только в это время он должен возвращать -1, в противном случае, если вход имеет какое-то значение и не обрабатывается, тогда он должен вернуть return -2.То должно быть три результата, один из которых равен -1, а второй равен -2.и третье - целочисленное значение. Может ли какое-либо тело привести меня сюда, если я добавлю цикл else, я не уверен, какое возвращаемое значение я могу использовать здесь, кроме -1, и целочисленное значение

Ответы [ 3 ]

2 голосов
/ 20 июля 2011

Просто разместите дополнительные операторы возврата или я что-то упустил?

т.е.

try  
{    
    for (int i=0; i<this.Count; i++)    
    {
        if (guid.Equals(this[i].Guid))
        {          
              return i;
        }
    }
    return somethingElseHere;
 }
1 голос
/ 20 июля 2011

Я думаю, что будет более читабельным генерировать исключение, если список пуст, сразу после запуска метода:

if (this.Count==0)
  throw new InvalidArgumentException();  
//rest as before

Наличие более одного целочисленного значения для ошибки очень неясно.

1 голос
/ 20 июля 2011

сразу после проверки цикла

if(i == this.Count) //i reached the end of the loop but no matches found
{
 return -2;
}
...