我有一个C#方法,其签名如下:
public int MyMethod(string myString)
我正在访问数据库,在表中搜索一个元组,然后获取该元组的Id
。此Id
将通过此方法返回。但是,如果表中未找到该元组,我想返回null
或理想情况下在屏幕上返回一条错误消息。我怎样才能做到这一点?
我的样本:
try
{
...
...
if(dataFromDB != null)
{
...
return dataFromDB.Id;
}
}
catch(Exception myException)
{
...
}
return ...;
答案 0 :(得分:2)
您可以使用Tuple class的概念从一个方法返回多个值,并以这种方式更改您的方法:
public (int id, string message) GetDataFromDB()
{
if(dataFromDB == null)
return ( 0, "Data not found");
else
return (dataFromDB.Id, "");
}
并以这种方式调用
var result = GetDataFromDB();
if(string.IsNullOrEmpty(result.message))
Console.WriteLine("Success, found ID=" + result.id);
else
Console.WriteLine("Failure: " + result.message);
答案 1 :(得分:1)
我个人不喜欢从同一方法返回值或错误消息。我相信方法应该返回值或引发异常,并且由UI解释结果并以适当的方式显示适当的消息。
您始终可以使该方法返回Nullable type。并在找不到值时返回null。像这样:
public int? MyMethod(string myString)
{
try
{
if (dataFromDB != null)
{
return dataFromDB.Id;
}
catch (Exception myException)
{
return null;
}
}