.net中return关键字的认识误区

本文深入解析了ASP.NET环境中return关键字的作用及其对页面加载过程的影响,通过新建web应用程序并修改代码,展示了单击按钮时Label1显示内容的原理。解释了return语句如何在Page_Load事件中终止执行,以及它与后续事件调用的关系。

c#中的return关键字,指的是结束当前所在 函数,不再执行该方法return后面的代码,于是我们认为.net中,当客户端请求时,当我们执行完某些操作后,就应该 立即返回,调试的话,确实照样子执行下去,来看下面的代码,

用vs新建一个web应用程序,只修改Default.aspx和Default.aspx.cs,其他不做修改

Default.aspx代码如下

<%@ Page Title="主页" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        欢迎使用 ASP.NET!
    </h2>
    <p>
        若要了解关于 ASP.NET 的详细信息,请访问 <a href="http://www.asp.net/cn" title="ASP.NET 网站">www.asp.net/cn</a>。
    </p>
    <p>
        您还可以找到 <a href="http://go.microsoft.com/fwlink/?LinkID=152368"
            title="MSDN ASP.NET 文档">MSDN 上有关 ASP.NET 的文档</a>。
    </p>
    <!--下面两行是新加的-->
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</asp:Content>

Default.aspx.cs代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Label1.Text = "first load";
            }
            else
            {
                return;
            }
        }


        protected void Button1_Click(object sender, EventArgs e)
        {
            Label1.Text = "click load";
        }
    }
}

有时候我们理所当然的认为,当我们单击按钮时,Label1应该显示的值是first load,可结果是click load,这是为什么那?

难道return语句没有执行,还是出了什么问题,原因如下:

当你单击按钮后,会执行Page_Load中的return,然后接着执行Button1_Click,根本原因,是你单击按钮时,发送的请求触发了当前页的一系列请求事件,该事件通过委托链式调用绑定的方法(.net是基于事件驱动的),执行Page_Load遇到return后,立即终止了Page_Load的执行,但并没有阻止后续的方法调用,由此 可见Button1_Click在委托调用中,是在Page_Load后的,这就是根本原因,,,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值