我刚买了一本关于使用Razor View Engine的ASP.NET MVC的书。有一个名为Usage of @ Operator
的小节,这个小节标题让我......好吧,不舒服。
剃刀视图引擎中的@
名为operator吗?
更新
我想我的问题不太清楚。我想知道@
是否是剃刀视图引擎中的运算符。例如,<
>
=
!=
>=
=>
这些在C#语言中称为运算符。 Razor视图引擎中的@
是否相同?
答案 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;称为等式,关系或条件运算符。 @符号似乎不适合任何这些组,所以我必须说,不,它不能被称为运算符。然而,另一方面,它确实表明执行了“某些操作”,这使得它很可能被称为操作符。