Да, но только вызывая его:
Func<object> func = delegate { return a; };
// or Func<object> func = () => a;
object b = func();
И, конечно, следующее намного проще ...
object b = a;
В комментариях скрестите- упоминаются исключения из множества тем;это можно исправить следующим образом:
Если делегат - это то, что мы хотим запустить в потоке пользовательского интерфейса из потока BG:
object o = null;
MethodInvoker mi = delegate {
o = someControl.Value; // runs on UI
};
someControl.Invoke(mi);
// now read o
Илинаоборот (для запуска делегата на BG):
object value = someControl.Value;
ThreadPool.QueueUserWorkItem(delegate {
// can talk safely to "value", but not to someControl
});