日期:2014-05-17  浏览次数:20474 次

@using
为什么要用@using?

C# code

@using (Html.BeginForm())
{ 
    <div style="width: 380px; margin: 0px auto">
        <fieldset>
            <legend>帐号信息</legend>
            <p>
                <label for="username">
                    帐号:</label>
                @Html.TextBox("username")
                @Html.ValidationMessage("username")
            </p>
            <p>
                <label for="password">
                    密码:</label>
                @Html.Password("password")
                @Html.ValidationMessage("password")
            </p>
            <p>
                @Html.CheckBox("rememberMe")
                <label class="inline" for="rememberMe">
                    下次自动登录(公共电脑上谨慎使用)</label>
            </p>
            <div class="center">
                <input type="submit" value="登录(L)" accesskey="L" />
            </div>
            <p>@Html.ActionLink("还没有账号?立即注册", "Register")</p>
        </fieldset>
    </div>
}



------解决方案--------------------
System.Web.Mvc.Html.MvcForm返回一个 System.Web.Mvc.Html.MvcForm类型的对象,而 System.Web.Mvc.Html.MvcForm实现了IDisposable接口,因此需要using 或者限时调用Dispose函数。

你的代码里既没有调用Dispose函数,也没有EndForm函数。就是因为用了using .
------解决方案--------------------
使用Using的目的是要调用 IDisable接口功能。

要注意,不是见到 IDisposable 接口就使用 Using。

不需要使用Using的时候使用它,只会让你的程序变得更慢。因为GC会自动在合适的时机去延迟调用IDisposeable,用不着你写Using去调用这个接口的功能。

判断何时使用Using,何时不写,要具体地知道 Dispose 方法里到底做了什么你必须当下就做的事情。如果没有,或者你不知道,就不要写 Using。因为没有必要现在就调用DIisposable接口功能。