如何从返回类型为int的方法返回错误消息/空值?

时间:2019-06-27 19:42:43

标签: c# asp.net-mvc

我有一个C#方法,其签名如下:

public int MyMethod(string myString)

我正在访问数据库,在表中搜索一个元组,然后获取该元组的Id。此Id将通过此方法返回。但是,如果表中未找到该元组,我想返回null或理想情况下在屏幕上返回一条错误消息。我怎样才能做到这一点?

我的样本:

try
{
    ...
    ...
    if(dataFromDB != null)
    {
        ...
        return dataFromDB.Id;
    }
}
catch(Exception myException)
{
    ...
}
return ...;

2 个答案:

答案 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);

可以starting with C# 7.0使用

答案 1 :(得分:1)

我个人不喜欢从同一方法返回值或错误消息。我相信方法应该返回值或引发异常,并且由UI解释结果并以适当的方式显示适当的消息。

您始终可以使该方法返回Nullable type。并在找不到值时返回null。像这样:

        public int? MyMethod(string myString)
        {
            try
            {

            if (dataFromDB != null)
            {
                return dataFromDB.Id;
            }
            catch (Exception myException)
            {
                return null;
            }
        }