class Device
{
public void AssignDevice(string playerName)
{
if (IsAssigned())
{
string message = "This device is already assinged to a player";
MessageBox.Show(message);
}
else
{
this.playerName = playerName;
}
}
}
我试图使一个方法,返回一个字符串在messageBox中,如果它是真的,没有使用异常。有什么建议吗?这是在winforms中创建的。
就我而言,您应该能够在不使用异常的情况下获得响应。
MessageBox.Show(message);
if (result == System.Windows.Forms.DialogResult.Yes)
{
// Closes the parent form.
this.Close();
}
或者直接查看microsoft文档
从技术上讲,您可以只返回一些字符串,例如错误消息或操作成功时的null
:
// return error message or null on success
public string AssignDevice(string playerName) {
if (IsAssigned()) {
string message = "This device is already assigned to a player";
MessageBox.Show(message);
return message;
}
else
this.playerName = playerName;
return message;
}
或使用Try
模式:
// return true on success, false of error, message - error message
public bool TryAssignDevice(string playerName, out string message) {
string message = null;
if (IsAssigned()) {
message = "This device is already assigned to a player";
return false;
}
else
this.playerName = playerName;
return true;
}
使用
if (!TryAssignDevice(playerName, out var errorMessage)) {
MessageBox.Show(errorMessage);
}
这种方法的缺点(除了一些返回值之外没有例外)是返回值很容易被忽略。