通过Lambda创建实例

时间:2018-08-23 16:56:02

标签: c# lambda

因此,我正在阅读其他人的代码,我想知道我是否正确,认为这只是轻松启动类实例的一种方式。

private ExampleClass ex = new ExampleClass();
public ExampleClass Ex => ex;

我一直试图模仿它-我试图运行的是:

class Program
{
    private List<int> testList = new List<int>();
    public List<int> TestList => testList;
    static void Main(string[] args)
    {

        var testList1 = new LambdaPractice(TestList);
        var testList2 = new LambdaPractice(TestList);

        testList1.Print();
        testList2.Print();

    }
}

但是,我不断收到错误消息,为了使用TestList,我必须将TestListtestList都设为静态变量。为什么此人的代码中不是这种情况?

*打印是我在LambdaPractice类中实现的功能,可打印出实例ID号。

1 个答案:

答案 0 :(得分:0)

  

我想知道我是否正确,认为这只是轻松启动类实例的一种方式。

否,它实际上是get-only属性的简写形式,它返回指定的lambda的值。 (也称为表情强壮的成员)

// This
public ExampleClass Ex => ex;
// is the same as
public ExampleClass Ex { get { return ex; } }
  

但是,我不断收到错误消息,为了使用TestList,必须将TestList和testList都设为静态变量。为什么此人的代码中不是这种情况?

正如错误所暗示的,您不能从静态方法访问非静态类成员。您要么需要使方法成为非静态方法,要么使列表成为静态方法。很难说,但我会假设您所指的代码实际上不是静态的。

更多信息:

Static members Expression-bodied members