ASP.net IF 块内的 C# 变量声明
本文关键字:变量 声明 net IF ASP | 更新日期: 2023-09-27 18:31:58
我尝试在 ASP.net C#中使用以下代码:
@{
var Host = Request.ServerVariables["HTTP_HOST"];
if (Host.Contains("example.com")) {
var Online = true;
}
if (Online == true) {
// Analytics Code
}
}
但它返回错误。
我发现变量Online
不能在外部使用,因为它的作用域仅限于声明它的 IF 语句。
通过反复试验,我发现以下代码有效:
@{
var Host = Request.ServerVariables["HTTP_HOST"];
if (Host.Contains("example.com")) {
Page.Online = true;
}
if (Page.Online == true) {
// Analytics Code
}
}
为什么第二个代码段有效,尽管它不应该工作,因为变量范围预计在 IF 语句的关闭}
结束?
谢谢
因为在第二条语句中,它不声明变量,而只设置它的值。 Page.Online
可能是在Page
本身的基类中声明和初始化的。
Online 是一个变量:
var Online = true;
页面是一个对象。 它实际上是一个内置对象,属于您正在操作的 Web 请求上下文。 它也是一个动态对象,这意味着它没有固定的类型。 其类型是在运行时推断的。
Page.Online
Page.Online 本身不是一个变量。 它是属于 Page 的动态属性。 动态对象的一个功能是,您可以为它们分配任何内容以及所有方法,并且编译器不会抱怨。 它将解析推迟到运行时,在运行时,其值是从上下文推断出来的。