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


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

Обновлен: Ноябрь 2007

Сообщение об ошибке

Анонимные методы, лямбда-выражения и выражения запросов внутри структур не могут получить доступ к членам экземпляра 'это'. Попробуйте скопировать 'это' в локальную переменную вне автономного метода, лямбда-выражения или выражения запроса и используйте локальный доступ.
Anonymous methods, lambda expressions, and query expressions inside structs cannot access instance members of 'this'. Consider copying 'this' to a local variable outside the anonymous method, lambda expression or query expression and using the local instead.

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

// CS1673.cs
delegate int MyDelegate();

public struct S
{
   int member;

   public int F(int i)
   {
       member = i;
       // Try assigning to a local variable
       // S s = this;
       MyDelegate d = delegate()
       {
          i = this.member;  // CS1673
          // And use the local variable instead of "this"
          // i =  s.member;
          return i;
           
       };
       return d();
   }
}

class CMain
{
   public static void Main()
   {
   }
}