我试图找出具有多个结果值的方法的优点和缺点.
例如,我正在使用登录方法.如果登录成功,它将通过,否则我需要知道它失败的原因.
1.返回真或假(信息不足)
bool Login(string user, string password);
Run Code Online (Sandbox Code Playgroud)
2.如果成功则返回true,否则抛出异常
public class UnknownUserException : Exception { }
public class WrongPasswordException : Exception { }
bool Login(string user, string password);
Run Code Online (Sandbox Code Playgroud)
什么也没有.如果不成功则抛出异常
public class UnknownUserException : Exception { }
public class WrongPasswordException : Exception { }
void Login(string user, string password);
Run Code Online (Sandbox Code Playgroud)
4.返回枚举值
enum LoginResult
{
Successful
UnknownUser,
WrongPassword
}
LoginResult Login(string user, string password);
Run Code Online (Sandbox Code Playgroud)
"登录"只是一个示例.我想知道不同实现的优点和缺点是什么,在哪些情况下它们或多或少是合适的.
我有一些需要很多参数的类.我刚刚创建了一个带有两个参数的例子来证明我的问题.
public class Zoo
{
public List<Animal> Animals { get; set; }
public Zoo()
{
Animals = new List<Animal>();
}
// Pass all parameters
public void AddAnimal(string name, int age)
{
Animals.Add(new Animal(name, age));
}
// -> pseudo code <- Create the parameter reference automated -> pseudo code <-
public void AddAnimal(params ...)
{
Animals.Add(new Animal(...));
}
}
public class Animal
{
public string Name { get; set; }
public int Age { get; set; }
public Animal(string name, int …Run Code Online (Sandbox Code Playgroud)