首页 > 解决方案 > 如何从 C# 中的 lambda 访问类成员?

问题描述

在java中我可以做到这一点

public class HelloWorld
{
  public static void main(String[] args)
  {
    OtherClass oc = new OtherClass();
    oc.a.run();
  }
}

public class OtherClass
{
  public int s = 3;
  public Runnable a = () -> System.out.println("s is " + s);
}

输出将是s is 3. 当我使用此代码在 C# 中尝试此操作时

using System;

namespace SomeNamespace
{
    public class Program
    {
        public static void Main(string[] args)
        {
            MyClass m = new MyClass();
            m.a.Invoke();
        }
    }

    public class MyClass
    {
        public int s = 3;
        public Action a = () => Console.WriteLine(s);
    }
}

然后我得到(23:51) A field initializer cannot reference the non-static field, method, or property 'SomeNamespace.MyClass.s'

标签: c#

解决方案


推荐阅读