工厂模式 c# 中缺少 return 语句
missing return statement in factory pattern c#
我的代码有以下代码,但它总是说缺少 return 语句,即使我已将它们放在开关列表中也是如此。
public IMap Map(string oldtheme)
{
switch (oldtheme)
{
case "archer": return new Archer();
case "craftyblue": return new CraftyBlue();
case "minimal": return new Minimal();
case "mintalicious": return new Mintalicious();
case "misfit": return new Misfit();
case "peach": return new Peach();
case "queen": return new Queen();
case "sketch": return new Sketch();
case "takeaway": return new TakeAwayLemonFresh();
case "lemonfresh": return new TakeAwayLemonFresh();
case "vanilla": return new Vanilla();
case "velvet": return new Velvet();
case "victoriana": return new Victoriana();
case "writer": return new Writer();
}
}
如果字符串是您交换机中的 none,您想要 return 什么?您的函数缺少针对该案例的 return 语句。
您缺少默认值。只需添加;
default: return null;
在你的 switch
底部,你会没事的。
您需要处理 oldtheme
是您检查的值的 none 的情况。
根据您的情况,我建议将 ArgumentException
so you know when it happens. I have added a default
个案例添加到您的 switch
声明中:
public IMap Map(string oldtheme)
{
switch ( oldtheme )
{
case "archer": return new Archer();
case "craftyblue": return new CraftyBlue();
case "minimal": return new Minimal();
case "mintalicious": return new Mintalicious();
case "misfit": return new Misfit();
case "peach": return new Peach();
case "queen": return new Queen();
case "sketch": return new Sketch();
case "takeaway": return new TakeAwayLemonFresh();
case "lemonfresh": return new TakeAwayLemonFresh();
case "vanilla": return new Vanilla();
case "velvet": return new Velvet();
case "victoriana": return new Victoriana();
case "writer": return new Writer();
default: throw new ArgumentException("unexpected value of oldtheme");
}
}
您必须在每个 return 命令后使用 break,它会正常工作。
我的代码有以下代码,但它总是说缺少 return 语句,即使我已将它们放在开关列表中也是如此。
public IMap Map(string oldtheme)
{
switch (oldtheme)
{
case "archer": return new Archer();
case "craftyblue": return new CraftyBlue();
case "minimal": return new Minimal();
case "mintalicious": return new Mintalicious();
case "misfit": return new Misfit();
case "peach": return new Peach();
case "queen": return new Queen();
case "sketch": return new Sketch();
case "takeaway": return new TakeAwayLemonFresh();
case "lemonfresh": return new TakeAwayLemonFresh();
case "vanilla": return new Vanilla();
case "velvet": return new Velvet();
case "victoriana": return new Victoriana();
case "writer": return new Writer();
}
}
如果字符串是您交换机中的 none,您想要 return 什么?您的函数缺少针对该案例的 return 语句。
您缺少默认值。只需添加;
default: return null;
在你的 switch
底部,你会没事的。
您需要处理 oldtheme
是您检查的值的 none 的情况。
根据您的情况,我建议将 ArgumentException
so you know when it happens. I have added a default
个案例添加到您的 switch
声明中:
public IMap Map(string oldtheme)
{
switch ( oldtheme )
{
case "archer": return new Archer();
case "craftyblue": return new CraftyBlue();
case "minimal": return new Minimal();
case "mintalicious": return new Mintalicious();
case "misfit": return new Misfit();
case "peach": return new Peach();
case "queen": return new Queen();
case "sketch": return new Sketch();
case "takeaway": return new TakeAwayLemonFresh();
case "lemonfresh": return new TakeAwayLemonFresh();
case "vanilla": return new Vanilla();
case "velvet": return new Velvet();
case "victoriana": return new Victoriana();
case "writer": return new Writer();
default: throw new ArgumentException("unexpected value of oldtheme");
}
}
您必须在每个 return 命令后使用 break,它会正常工作。