C# 并非所有代码路径都在lambda表达式中返回类型为';Func<;IUnityContainer>;
为什么这段代码抛出错误:“不是所有代码路径都返回值”C# 并非所有代码路径都在lambda表达式中返回类型为';Func<;IUnityContainer>;,c#,C#,为什么这段代码抛出错误:“不是所有代码路径都返回值” private static Lazy container=new Lazy(()=> { IUnityContainer容器=新的UnityContainer(); }); 在lamba表达式中不需要赋值,只需要lambda返回一个新的UnityContainer对象: private static Lazy<IUnityContainer> container = new Lazy<IUnityContainer>
private static Lazy container=new Lazy(()=>
{
IUnityContainer容器=新的UnityContainer();
});
在lamba表达式中不需要赋值,只需要lambda返回一个新的UnityContainer对象:
private static Lazy<IUnityContainer> container = new Lazy<IUnityContainer>(() => new UnityContainer());
有关延迟初始化的更多信息,请查看。您的代码有几个问题: 首先,您正在使用的
Lazy
构造函数将Func
作为参数。这意味着作为参数传递的lambda需要返回类型为T
的值
编写lambda表达式时,有两种方法。例如,返回int
值的lambda可以写成速记版本:
Func<int> f = () => 0;
new Lazy<IUnityContainer>(() => new UnityContainer());
或者在匿名方法中包含return
关键字:
new Lazy<IUnityContainer>(() =>
{
new UnityContainer());
});
newlazy(()=>
{
新的UnityContainer());
});
我想您会发现,在该lambda中没有返回值的代码路径。是的,在这里它显示没有返回值
Func<int> f = () =>
{
return 0;
};
new Lazy<IUnityContainer>(() => new UnityContainer());
new Lazy<IUnityContainer>(() =>
{
new UnityContainer());
});