Add methods to Func

I have a list of Func and I want to add elements. If I add them on Start like below, no problem:

        public List<System.Func<bool>> conditions = new List<System.Func<bool>>();

        void Start()
        {
        conditions.Add(Iamdead);
        conditions.Add(Iamalive);
        }

        bool Iamdead()
        {
        ...
        return ...;
        }
        bool Iamalive()
        {
        ...
        return ...;
        }

But I want to define the list without Start so that I have a clean list of methods that I can see as elements in a row. I have tried the classic format:

public List<System.Func<bool>> conditions = new List<System.Func<bool>>()
{
        bool Iamdead()
        {
        ...
        return ...;
        }
        ,
        bool Iamalive()
        {
        ...
        return ...;
        }
};

This gave me parsing error

I tried like that:

public List<System.Func<bool>> conditions = new List<System.Func<bool>>()
    {
Iamdead,Iamalive
    };

        static bool Iamdead()
        {
        ...
        return ...;
        }
        static bool Iamalive()
        {
        ...
        return ...;
        }

This worked only if the methods are static but I do not want them to be static. Without static, it doesn't work. It seems I couldn't understand the data structure here. Can anyone tell me the correct way of defining Func in a list?

Thanks

Jon Skeet
people
quotationmark

I strongly suspect the problem is that you're trying to access this (implicitly) within a field initializer. You're not allowed to do that. Just move the initialization into a constructor:

// You don't really use public fields, do you?
private readonly List<Func<bool>> conditions;

public MyClass()
{
    conditions = new List<Func<bool>> { Method1, Method2 };
}

private bool Method1() { ... }
private bool Method2() { ... }

(I'm assuming you actually want your conditions to depend on state within the instance. If they don't, you don't need this. If the methods aren't used other than for these conditions, and they're short enough, you might want to use lambda expressions instead.)

people

See more on this question at Stackoverflow