首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在c#中退出非空方法

如何在c#中退出非空方法
EN

Stack Overflow用户
提问于 2019-11-15 10:25:19
回答 5查看 993关注 0票数 2

我有一个返回ItemCollection的方法,如果没有提供信息,我希望尽早停止函数。我通常会通过返回来完成这个任务;但是,正如我的方法所期望的那样,ItemCollection失败了。我把这当成了一件工作,但坦白地说,这似乎很烦人。我是不是错过了什么。我试着返回;我不想抛出异常。

代码语言:javascript
复制
    private ItemCollection loadLeft_Click(object sender, RoutedEventArgs e)
    {

        var leftUser = UsrLeft.Text;
        if (leftUser == "")
        {
            MessageBox.Show("No User Entered");
            GroupListLeft.Items.Add("");
            var fail = GroupListLeft.Items;

            return fail;
        }

        //Succesful test do stuff 
        var leftItems = GroupListLeft.Items;

        return leftItems;
     }
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-11-15 10:30:43

你没有什么选择:

  • 抛出一个新的Exception (甚至可能是像NoUserEnteredException("someText")这样的自定义Exception)。null
  • return返回
  • 空集合或虚拟对象(参见空对象模式)

最后一个是更好的选择,在这种情况下,您不需要在客户端代码中编写空检查或尝试捕获部分。

票数 11
EN

Stack Overflow用户

发布于 2019-11-15 10:36:23

您将需要返回等同于ItemCollection的内容,这取决于您可能希望调用过程如何处理这样的返回,您可以使用null返回:

代码语言:javascript
复制
    if (leftUser == "")
    {
        MessageBox.Show("No User Entered");
        return null;
    }

或者返回一个新的ItemCollection

代码语言:javascript
复制
    if (leftUser == "")
    {
        MessageBox.Show("No User Entered");
        return new ItemCollection();
    }
票数 1
EN

Stack Overflow用户

发布于 2019-11-15 10:33:10

您将需要返回null,如

代码语言:javascript
复制
private ItemCollection loadLeft_Click(object sender, RoutedEventArgs e)
{

    var leftUser = UsrLeft.Text;
    if (leftUser == "")
    {
        MessageBox.Show("No User Entered");

        return null;
    }

    //Succesful test do stuff 
    var leftItems = GroupListLeft.Items;

    return leftItems;
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58874999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档