Leer en inglés

Compartir a través de


Error del compilador CS0077

El operador as se debe usar con un tipo de referencia o un tipo que acepta valores NULL ('int' es un tipo de valor que no acepta valores NULL)

Se pasó al operador as un tipo de valor. Dado que as puede devolver null, solo se le puede pasar un tipo de referencia o un tipo de valor que acepte valores NULL.

Sin embargo, mediante la coincidencia de patrones con el operador is, podemos realizar directamente la comprobación de tipos y las asignaciones en un solo paso.

El ejemplo siguiente genera la advertencia CS0077:

// 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;
      } 
   }  
}