在 if 语句中使用 return 时有啥作用?

Posted

技术标签:

【中文标题】在 if 语句中使用 return 时有啥作用?【英文标题】:What does return do when used inside an if statement?在 if 语句中使用 return 时有什么作用? 【发布时间】:2011-11-15 05:58:41 【问题描述】:

以下代码中 if 语句中的 return 有什么作用?

public void startElement(String namespaceURI, String localName,String qName, 
                                         Attributes atts) throws SAXException

    depth++;
    if (localName.equals("channel"))
    
        currentstate = 0;
        return;
    
    if (localName.equals("image"))
    
        // record our feed data - you temporarily stored it in the item :)
        _feed.setTitle(_item.getTitle());
        _feed.setPubDate(_item.getPubDate());
    
    if (localName.equals("item"))
    
        // create a new item
        _item = new RSSItem();
        return;
    
    if (localName.equals("title"))
    
        currentstate = RSS_TITLE;
        return;
    
    if (localName.equals("description"))
    
        currentstate = RSS_DESCRIPTION;
        return;
    
    if (localName.equals("link"))
    
        currentstate = RSS_LINK;
        return;
    
    if (localName.equals("category"))
    
        currentstate = RSS_CATEGORY;
        return;
    
    if (localName.equals("pubDate"))
    
        currentstate = RSS_PUBDATE;
        return;
    
    // if you don't explicitly handle the element, make sure you don't wind 
           // up erroneously storing a newline or other bogus data into one of our 
           // existing elements
    currentstate = 0;

它是把我们带出 if 语句并继续下一条语句,还是把我们带出方法 startElement?

【问题讨论】:

好像这里的所有答案都是同时发布的,内容一样! 【参考方案1】:

上面代码中的返回值会带你跳出方法。

【讨论】:

我还注意到它在执行 return 的行执行此操作。该行下的代码均未执行【参考方案2】:

它完成了方法,所以它下面的代码不会被执行。

【讨论】:

【参考方案3】:

它是否将我们带出 if 语句并继续下一步 声明还是将我们带出方法 startElement?

它会让你脱离方法.. return 语句终止函数的执行

【讨论】:

【参考方案4】:

它将返回您在方法头中声明的内容(这里 void = nothing = 它只会结束方法)

【讨论】:

【参考方案5】:

return 总是控制调用方法。

【讨论】:

【参考方案6】:

这里的return可能是为了“提高”方法的性能,这样一旦执行了需要的场景,就不会执行其他比较。

但是,在一个方法中有多个返回点并不是一个好习惯。

正如我的 cmets 中所述,我会尝试不同的方法来实现相关代码的流程。

【讨论】:

-1 谁说拥有多个返回点不是好习惯?没关系(只要没有太多 互联网上有很多关于函数中的多个退出点的争论。然而,在我的小经验中,我在调试方法时遇到了很多问题,返回语句分散在它的流程中。在这种情况下,返回语句为 7 并定义了方法的流程。 其实,你是对的......有太多的回报。如果您编辑您的答案,我将删除我的反对票(除非您编辑您的帖子,否则我无法删除它 - 只需添加一个句号或其他内容,任何更改都可以让我删除它,但我被锁定,直到您这样做) 我想说大方法不应该有多个返回点。使用较小的方法更安全,因为它更容易快速了解必须在返回之前取消初始化的内容。【参考方案7】:

是的。此处的返回将使方法失去控制。

【讨论】:

【参考方案8】:

return 将结束方法的流程,在功能上与使用较短的else if 之类的链相同

/* if (localName.equals("channel")) 
    currentstate = 0; // This can be removed because it's the default below.
 else */ if (localName.equals("image")) 
    // record our feed data - you temporarily stored it in the item :)
    _feed.setTitle(_item.getTitle());
    _feed.setPubDate(_item.getPubDate());
 else if (localName.equals("item")) 
    // create a new item
    _item = new RSSItem();
 else if (localName.equals("title")) 
    currentstate = RSS_TITLE;
 else if (localName.equals("description")) 
    currentstate = RSS_DESCRIPTION;
 else if (localName.equals("link")) 
    currentstate = RSS_LINK;
 else  if (localName.equals("category")) 
    currentstate = RSS_CATEGORY;
 else if (localName.equals("pubDate")) 
    currentstate = RSS_PUBDATE;
 else 
    currentstate = 0;

【讨论】:

以上是关于在 if 语句中使用 return 时有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章

在c语言中 if(0)是啥意思

冒号在C语言中起啥作用

问号附加到域属性时有啥作用

#pragma hdrstop without parameter 在多个文件中使用时有啥作用?

使用不返回任何内容的 return 语句有啥好处吗?

php if语句没有中括号 那表示的是啥意思