Прочитать на английском

Поделиться через


Ошибка компилятора CS0077

Оператор as необходимо использовать с типом ссылки или типом, допускающим значение null (int является типом, не допускающим значение null).

В оператор as был передан тип значения. Так как as он может возвращать значение NULL, он может быть передан только ссылочным типом или типом значений, допускающих значение NULL.

Тем не менее, используя сопоставление шаблонов с оператором is , мы можем напрямую выполнять проверку типов и назначения на одном шаге.

Следующий пример приводит к возникновению ошибки CS0077:

C#
// CS0077.cs  
using System;  

struct S  
{  
}  
  
class M  
{  
   public static void Main()  
   {  
      object o;
      S s;  

      o = new S();
  
      s = o as S;    // CS0077, S is not a reference type

      // Use pattern matching instead of as
      if (o is S sValue)
      {
          s = sValue;
      } 
   }  
}