任何设计模式都要避免以下嵌套的if语句?我无法想出这种情况的任何设计模式.
private Message GetMessageFrom(string[] args)
{
string id = null, body = null, label = null, path = null;
if (args.Length > 0)
{
id = args[0];
if (args.Length > 1)
{
body = args[1];
if (args.Length > 2)
{
label = args[2];
if (args.Length > 3)
path = args[3];
}
}
}
return new Message(id, body, label, path);
}
Run Code Online (Sandbox Code Playgroud)
如果数组不包含此索引,您可以使用ElementAtOrDefault返回默认值(如果null类似于引用类型string):
string id = args.ElementAtOrDefault(0);
string body = args.ElementAtOrDefault(1);
string label = args.ElementAtOrDefault(2);
string path = args.ElementAtOrDefault(3);
return new Message(id, body, label, path);
Run Code Online (Sandbox Code Playgroud)
或者您可以使用a for-loop和a switch:
string id = null, body = null, label = null, path = null;
for (int i = 0; i < args.Length; i++)
{
switch (i)
{
case 0: id = args[i]; break;
case 1: body = args[i]; break;
case 2: label = args[i]; break;
case 3: path = args[i]; break;
}
}
Run Code Online (Sandbox Code Playgroud)