none
как вернуть нуль вместо объекта или вообще ничего не возвращать RRS feed

  • Вопрос

  • //вызов метода

    structRecord _structRecord = Check()

    //вот сам метод
            public structRecord Check()
            {
                foreach (structRecord _structRecord in listRecord)
                {
                    if ()
                      {
                           return _structRecord
                      }
                }
    //вот тут, если ничего не было найдено в foreach, надо или ничего не возвращать, или вернуть нуль. Но как это сделать? return null не дает.
            ???    return ......; ???
            }

     

    • Перемещено Siddharth Chavan 1 октября 2010 г. 21:19 MSDN Forums Consolidation (От:Visual C#)
    15 июля 2010 г. 8:18

Ответы

  • public bool Check(out structRecord _structRecord)
    {
      bool _ret = false;
      foreach (structRecord _sr in listRecord)
      {
         if ()
         {
           _structRecord = _sr;
           _ret = true;
         }
       }
    return _ret;
    }

    И используй вызов соответственно
    if (Check(out _structRecord))
    {
    // нашли
    }
    else
    {
    // не нашли
    }

     
    • Помечено в качестве ответа Qwester33 15 июля 2010 г. 9:16
    15 июля 2010 г. 9:02
    Модератор
  • public bool Check(out structRecord _structRecord)
    {
     bool _ret = false;
     _structRecord = new structRecord();
     foreach (structRecord _sr in listRecord)
    // И тд...
    
    
    Ну или используй
    public bool Check(ref structRecord _structRecord)<br/>
    
    

    Но тогда все равно придется инициализировать __structRecord, только перед вызовом

    _structRecord = new structRecord();
    if (Check(ref _structRecord))
    • Помечено в качестве ответа Qwester33 15 июля 2010 г. 9:50
    15 июля 2010 г. 9:46
    Модератор
  • В принципе, это тоже не обязательно. Если возвращаемое значение Nullable , то подобная конструкция

        private int? Check()
        {
          if ()
          {
            return 1;
          }
          return null;
        }
    

    тоже будет работать.

    • Помечено в качестве ответа Qwester33 20 июля 2010 г. 15:18
    16 июля 2010 г. 6:23
    Модератор

Все ответы

  • public bool Check(out structRecord _structRecord)
    {
      bool _ret = false;
      foreach (structRecord _sr in listRecord)
      {
         if ()
         {
           _structRecord = _sr;
           _ret = true;
         }
       }
    return _ret;
    }

    И используй вызов соответственно
    if (Check(out _structRecord))
    {
    // нашли
    }
    else
    {
    // не нашли
    }

     
    • Помечено в качестве ответа Qwester33 15 июля 2010 г. 9:16
    15 июля 2010 г. 9:02
    Модератор
  • Спасибо, но все равно требует _structRecord
    public bool Check(out structRecord _structRecord)
    
    {
    
     bool _ret = false;
    
     foreach (structRecord _sr in listRecord)
    
     {
    
      if ()
    
      {
    
      _structRecord = _sr;
    
      _ret = true;
    
      }
    
     }
    //тут подчеркивает return и пишет, что если параметр помечен как out, то _structRecord должно быть присвоено значение
    return _ret;
    
    }
    
    
    15 июля 2010 г. 9:35
  • public bool Check(out structRecord _structRecord)
    {
     bool _ret = false;
     _structRecord = new structRecord();
     foreach (structRecord _sr in listRecord)
    // И тд...
    
    
    Ну или используй
    public bool Check(ref structRecord _structRecord)<br/>
    
    

    Но тогда все равно придется инициализировать __structRecord, только перед вызовом

    _structRecord = new structRecord();
    if (Check(ref _structRecord))
    • Помечено в качестве ответа Qwester33 15 июля 2010 г. 9:50
    15 июля 2010 г. 9:46
    Модератор
  • Я понял, спасибо. Надо инициализировать параметр перед его возвратом.
    15 июля 2010 г. 11:04
  • В принципе, это тоже не обязательно. Если возвращаемое значение Nullable , то подобная конструкция

        private int? Check()
        {
          if ()
          {
            return 1;
          }
          return null;
        }
    

    тоже будет работать.

    • Помечено в качестве ответа Qwester33 20 июля 2010 г. 15:18
    16 июля 2010 г. 6:23
    Модератор