请大家谈谈 @ 符号在C#中的应用

时间:2021-07-11 21:21:48
大家一定遇到过象
String InsertText = @"UPDATE mytable SET myfield = ?";
之类的东西, @ 的应用还有很多,但是MSDN中说的很简单,
大家可以谈谈心得吗?

20 个解决方案

#1


@就是简单的去除转义字符,这样,换行、“\”符号等都可以直接输入
比如
string s = @" A line
another line";
string s = @" A\B\C\D ";

#2


我不晓得多少,只知@可以取消转意符
比如: @"c:/net/t"就不回先转行,再制表。
等于:"c://net//t"

#3


不好意思上面的/写反了,应该是\

#4


那么我的问题中提到的那个用法又是什么意思呢?
比如,在VS.NET中自动生成的INSERT,SELECT语句中就没有@,
但是在 DELETE, UPDATE语句中就带了@, 为什么?
这个@在这里又有什么意义?

#5


在SQL_T的语句中,如果是采用SqlServer那么@开头表示语句的参数,?用于其它非SqlServer的数据库。之所以要在SQL_T的语句前面加上@,是为了防止对语句中可能出现的引号忘记使用\转义,一方面是为了方便,另一方面也保证了程序的稳定,例如:
string sqlQuery="SELECT * FROM pubs WHERE Name='abc'";
上述语句在编译是不会报错,但在执行数据库查询时,会产生异常。但如果是:string sqlQuery=@"SELECT * FROM pub WHERE Name='abc'";就OK.
当然,如果语句中不存在需要转义的符号,也可以不要在前面加@。

#6


一般都是用于转义:)

#7


niwalker:
你说的又点头绪了,开始明白了.谢谢!
但是什么符号才是所谓的"需要转义"的符号呢?

#8


有了@,C#的字符串就会比较像VB.net的,但是还有VB无法比拟的优点!就是换行符的问题。如我经常需要在ASP中嵌入HTML代码,这样就可以写成
Response.Write (@" 

<h1>XXX</h1>
<table>
 <tr>
   <td>
AAAAAA
   </td>
 <tr>
</table>

";

#9


@"c:\mycode\init.exe"就等价于"c:\\mycode\\int.exe"

@"ab
c"也等价于"ab\r\nc"

#10


除了niwalker所说的,各位的所说的,我原来基本是知道的,
但是有没有一个总结性的规则呢?
在MSDN上说的也是零零碎碎啊.

#11


在下记得这个@似乎还有一个功能,就是可以使用特殊字符做变量名
比如 int @变量名
似乎是为了跟别的语言兼容用的

#12


good!

我是在创建数据库连接字符串的时候发现的,但是也不懂,原来是这样

#13


还有一个用处,你可以用关键字来做变量名,例如:
int @class;
int @Main;
而他们实际的名称是class、Main,这样可以在不同语言的冲突时利用

#14


那么请问各位,“转义”是什么意思?到底有多少重意思?
为什么?什么时候?什么地方需要“转义”!?
“转义”的具体实现又怎么样做?

#15


标识符不能与关健字冲突。  可以用@来避免这种冲突。
比如说:(下面这两个标识符是等价的)
temp
@temp
@字符不认为是标识符的一部份。

#16


我来学习学习!:)

#17


到底有没有人说说什么是转义啊!

#18


你。。。。。。不明白转义 吗?
就是\ 这个符号,和\n  \r  这个组合把字符n r 原来的字符意思改变了(改成控制符号了)
但在表示文件、路径时又有了冲突,就又多了个@ 来取消\ 带来的转义。

#19


哦,原来是这个意思,比如\n是换行这些,我当然知道.
不要说的那么玄乎不就成了.

#20


来这里讨论真好!

#1


@就是简单的去除转义字符,这样,换行、“\”符号等都可以直接输入
比如
string s = @" A line
another line";
string s = @" A\B\C\D ";

#2


我不晓得多少,只知@可以取消转意符
比如: @"c:/net/t"就不回先转行,再制表。
等于:"c://net//t"

#3


不好意思上面的/写反了,应该是\

#4


那么我的问题中提到的那个用法又是什么意思呢?
比如,在VS.NET中自动生成的INSERT,SELECT语句中就没有@,
但是在 DELETE, UPDATE语句中就带了@, 为什么?
这个@在这里又有什么意义?

#5


在SQL_T的语句中,如果是采用SqlServer那么@开头表示语句的参数,?用于其它非SqlServer的数据库。之所以要在SQL_T的语句前面加上@,是为了防止对语句中可能出现的引号忘记使用\转义,一方面是为了方便,另一方面也保证了程序的稳定,例如:
string sqlQuery="SELECT * FROM pubs WHERE Name='abc'";
上述语句在编译是不会报错,但在执行数据库查询时,会产生异常。但如果是:string sqlQuery=@"SELECT * FROM pub WHERE Name='abc'";就OK.
当然,如果语句中不存在需要转义的符号,也可以不要在前面加@。

#6


一般都是用于转义:)

#7


niwalker:
你说的又点头绪了,开始明白了.谢谢!
但是什么符号才是所谓的"需要转义"的符号呢?

#8


有了@,C#的字符串就会比较像VB.net的,但是还有VB无法比拟的优点!就是换行符的问题。如我经常需要在ASP中嵌入HTML代码,这样就可以写成
Response.Write (@" 

<h1>XXX</h1>
<table>
 <tr>
   <td>
AAAAAA
   </td>
 <tr>
</table>

";

#9


@"c:\mycode\init.exe"就等价于"c:\\mycode\\int.exe"

@"ab
c"也等价于"ab\r\nc"

#10


除了niwalker所说的,各位的所说的,我原来基本是知道的,
但是有没有一个总结性的规则呢?
在MSDN上说的也是零零碎碎啊.

#11


在下记得这个@似乎还有一个功能,就是可以使用特殊字符做变量名
比如 int @变量名
似乎是为了跟别的语言兼容用的

#12


good!

我是在创建数据库连接字符串的时候发现的,但是也不懂,原来是这样

#13


还有一个用处,你可以用关键字来做变量名,例如:
int @class;
int @Main;
而他们实际的名称是class、Main,这样可以在不同语言的冲突时利用

#14


那么请问各位,“转义”是什么意思?到底有多少重意思?
为什么?什么时候?什么地方需要“转义”!?
“转义”的具体实现又怎么样做?

#15


标识符不能与关健字冲突。  可以用@来避免这种冲突。
比如说:(下面这两个标识符是等价的)
temp
@temp
@字符不认为是标识符的一部份。

#16


我来学习学习!:)

#17


到底有没有人说说什么是转义啊!

#18


你。。。。。。不明白转义 吗?
就是\ 这个符号,和\n  \r  这个组合把字符n r 原来的字符意思改变了(改成控制符号了)
但在表示文件、路径时又有了冲突,就又多了个@ 来取消\ 带来的转义。

#19


哦,原来是这个意思,比如\n是换行这些,我当然知道.
不要说的那么玄乎不就成了.

#20


来这里讨论真好!

#21