在C#中,@符号不仅可以加在字符串常量之前,使字符串不作转义之用,还可以加在变量名之前,使变量名与关键字不冲突,这种用法称为“逐字标识符”。请看下面的代码:
class @class { public static void @static(bool @bool) { if (@bool) System.Console.WriteLine("true"); else System.Console.WriteLine("false"); } }
这里使用到@的地方有三处,@class,@static和@bool,如果不加@的话,他们都是关键字,编译就会报错。加了@之后,他们和普通的变量名没有区别了,可以正常使用。当然@也可以加在非关键字之前,比如:
static void Test(string @str) { Console.WriteLine(str); }
这样@就一点效果也没有,@str等价于str。
当然,使用关键字作为变量名是非常不推荐的,除非特殊情况,比如和其它语言交互,一般不鼓励使用。
修改过程后,仍然返回错误#1324-未定义的游标:getid。我如何解决这个问题?
我正在分析ASTNodes(org.eclipse.jdt.core.dom),并试图找到我拥有的变量节点(SimpleName)的VariableDeclaration。示例: 我还需要一个解决方案,可以找到声明,如果它是一个类字段。
问题内容: 我正在尝试使用EF5从bcontext.Database.SqlQuery执行存储过程。 它抛出一个错误 如果customerNumber是staff,则SP返回,否则返回行。 如何处理? 问题答案: 由于使用的是命名参数,因此必须为要传递的参数指定匹配名称。
问题内容: 当我使用上面的语句时,我没有得到错误(我没有使用结尾),但是当我使用下面的语句时,我得到了这个错误: int类型的文字3244444444超出范围 如果使用,则没有错误。 这是什么原因呢?对于长变量,不强制使用l。 问题答案: 被解释为文字整数,但不适合32位变量。它必须是一个 字面量long值 ,因此它需要一个or或末尾: 更多信息: 原始数据类型,特别是 默认值 和 文字 部分。
问题内容: 我偶然发现了一个奇怪的问题,下面的代码无法编译: 错误(代码是linter推荐的代码)。: 注意,确实使用了该变量。 但是,如果我添加了else块-一切都会按预期编译: 这看起来像是编译器中的错误,还是一个已知问题?任何想法?(我正在使用go 1.11) 编辑:到目前为止的所有被告。按照:https : //golang.org/ref/spec#Short_variable_decl
let和const是JavaScript里相对较新的变量声明方式。 像我们之前提到过的,let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题。 const是对let的一个增强,它能阻止对一个变量再次赋值。 因为TypeScript是JavaScript的超集,所以它本身就支持let和const。 下面我们会详细说明这些新的声明方式以及为什么推荐使用它们来代替v