@ inside razor语法是否叫做operator?

时间:2011-10-13 08:14:38

标签: asp.net asp.net-mvc visual-studio asp.net-mvc-3 razor

我刚买了一本关于使用Razor View Engine的ASP.NET MVC的书。有一个名为Usage of @ Operator的小节,这个小节标题让我......好吧,不舒服

剃刀视图引擎中的@名为operator吗?

更新

我想我的问题不太清楚。我想知道@是否是剃刀视图引擎中的运算符。例如,< > = != >= =>这些在C#语言中称为运算符。 Razor视图引擎中的@是否相同?

7 个答案:

答案 0 :(得分:5)

我认为您感到不适的原因是@ 令牌(从解析角度谈论它时,虽然字符这个词也应该这样做)超载以指示许多不同的情况。让我们来看看它们是什么:

  • 将值写入输出:

    @this.Value
    
  • 表示代码块转换:

    @{
        var foo = 1;
        foo += 1;
    }
    
  • 表示代码语句转换:

    <div>
    @if(foo) {
         // code
    }
    </div>
    
  • 指示转到标记直到行尾

    @if(foo) {
        foo = false;
        @: value printed to output
    }
    
  • 表明指令声明:

    @inherits MyCustomBaseType
    
  • 表示特殊代码块:

    @section Foo {
        <div />
    }
    
    @helper Bar(int param) {
        param += 1;
    }
    
  • 分隔评论栏:

    @*
       This is a comment
    *@
    
  • 转义@字符:

    Email me at myemail@@example.com
    

在我看来,只有第一种用法可以被视为运营商。操作数(即@之后的所有其他内容,但不包括第一个标记有效的空白字符)作为参数传递给Write()方法。所有其他用法都没有任何明确可识别的操作数或需要额外的标记(注释块中的*等)才能被识别。

答案 1 :(得分:4)

根据Razor的官方网页,你可以找到一个例子here,它似乎不是称为的运算符。

从链接页面:

  

使用@ 字符

将代码添加到页面

(我的重点)

我在同一个网站上也发现了很多其他网页,都将其称为“@字符”,所以在这个意义上它不被视为运算符

&LT;&意见GT;

然而,如果您在Wikipedia on the topic of operators上阅读,那么:

  

语法运算符通常与函数形成对比。在大多数语言中,函数可以被视为具有固定优先级和关联性的特殊形式的前缀运算符,通常具有强制括号,例如Func(a)(或LISP中的(Func a))。大多数语言都支持程序员定义的函数,但不能真正声称支持程序员定义的运算符,除非它们具有多于前缀表示法和多个优先级。 语义上的运算符可被视为具有不同调用符号和有限数量参数(通常为1或2)的特殊函数形式。

(再次,我的重点)

然后我会说@实际上是一个运算符。它是一个具有特定含义的符号,你可以说你“逃离周围的上下文去做别的事情”,有点像函数调用。

换句话说,虽然 operator 这个词没有出现在我到目前为止看到的网站文章中,但我认为它仍然是一个运营商。

&LT; /&意见GT;

答案 2 :(得分:3)

嗯,你指的是工具的字体和颜色部分&gt; Visual Studio中的选项对话框?如果是这样,不,它不是运营商,它是“HTML服务器端脚本”。 “功能”,“部分”和其他特定于剃刀的关键字也是这种颜色。

否则,是的,它是来自技术说明的操作员。我不完全确定你正在寻找的其他区别。

答案 3 :(得分:2)

不,@字符不用作运算符。只有那个作者的选择才能这样称呼。

例如,在blog post introducing Razor中,它在任何地方都没有被描述为运算符。

似乎还没有官方或事实上的术语。我个人称之为标记,因为它在标记代码中与其他标记一起使用,并且它被用作<% %>脚本标记的替代。

我想将它称为运算符并不是真的不正确,但它并不常用。由于剃刀标签包含也可以包含运算符的C#或VB代码,因此可能会让人感到困惑。

答案 4 :(得分:1)

@字符开始内联表达式,单个语句块和多语句块。

Scott Gu's博客上,他并未将其称为operator,但有许多其他开发人员都这样做。我个人认为这不是operator,而是identifier

答案 5 :(得分:0)

@符号不是运算符,它是指示剃刀语句开始的指示符。

它与php中的<?php ?>相当。这向编译器/解释器指示您的代码在哪里

e.g。

@Html.ActionLink(...)

@(...)给你oportunitie在那里做一些编码 e.g

@(
int a = 0;
int b = 4;
int c = a + b;
)

我希望这可以帮助你

答案 6 :(得分:0)

据我所知,这些符号是&gt;,!=和&amp;&amp;称为等式,关系或条件运算符。 @符号似乎不适合任何这些组,所以我必须说,不,它不能被称为运算符。然而,另一方面,它确实表明执行了“某些操作”,这使得它很可能被称为操作符。