Рассмотрим следующий код:
using System;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var square = new Square(4);
            Console.WriteLine(square.Calculate());
        }
    }
    class MathOp
    {        
        protected MathOp(Func<int> calc) { _calc = calc; }
        public int Calculate() { return _calc(); }
        private Func<int> _calc;
    }
    class Square : MathOp
    {
        public Square(int operand)
            : base(() => _operand * _operand)  // runtime exception
        {
            _operand = operand;
        }
        private int _operand;
    }
}
(игнорируйте конструкцию класса, я на самом деле не пишу калькулятор! Этот код просто представляет собой минимальный репродукт для гораздо более серьезной проблемы, которая потребовалась некоторое время для сужения)
Я ожидал бы этого:
- напечатать "16", ИЛИ
 - вывести ошибку времени компиляции, если закрытие поля члена не допускается в этом сценарии
 
Вместо этого я получаю бессмысленное исключение, указанное в указанной строке. В версии 3.0 CLR это исключение NullReferenceException; на Silverlight CLR это печально известная Операция может дестабилизировать время выполнения.