一 字符串中的用法
1.学过C#的人都晓得C# 中字符串常量能够以@ 开首申明,如许的长处是转义序列“不”被处置惩罚,按“原样”输出,即我们不须要对转义字符加上 \ (反斜扛),就能够轻松coding。如,
string filePath = @"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"
2.如要在一个用 @ 引起来的字符串中包括一个双引号,就须要运用两对双引号了。这时候你不能运用 \ 来转义爽引号了,由于在这里 \ 的转义用处已被 @ “屏障”掉了。如,
@"""Ahoy!"" cried the captain." // 输出为: "Ahoy!" cried the captain.
这有点像SQL中的单引号常量处置惩罚方式:
DECLARE @msg varchar(100) SET @msg = ''Ahoy!'' cried the captain.' -- 输出为: 'Ahoy!' cried the captain.
3.@会辨认换行符
实在这个特征,我不晓得怎样形貌,只是有时发明的,先来看看下面的代码:
string script = @" <script type=""type/javascript""> function doSomething() { } </script>";
这段代码在cs文件中写js,构造就很清楚了,平常状况我们是如许coding的:
string script2 = "<script type=\"type/javascript\">function doSomething(){}</script>";
或许:
string script3 = "<script type=\"type/javascript\">" + "function doSomething(){ " + "}</script>";
平常我们会挑选后者,由于js代码平常比较长,或许要领体很大,或许须要衔接其他变量,如许构造比较清楚。
注重:假如“拼接”的次数许多,应当斟酌运用StringBuilder了,有助于进步机能。
另有一种场景,也很罕见,在顺序中拼接 SQL 语句,如
private const string SQL_INS_USER = @" INSERT INTO t_User([UserName], [Password], Email) VALUES(@UserName, @Password, @Email)";
如许就像写存储历程平常,坚持相称高的代码清楚度。但是,我们须要关注一个题目:字符串长度看下面的测试代码:
private const string SQL_INS_USER1 = @" INSERT INTO t_User([UserName], [Password], Email) VALUES(@UserName, @Password, @Email)"; private const string SQL_INS_USER2 = @"INSERT INTO t_User([UserName], [Password], Email) VALUES(@UserName, @Password, @Email)"; private const string SQL_INS_USER3 = @"INSERT INTO t_User([UserName], [Password], Email) VALUES(@UserName, @Password, @Email)"; static void Main(string[] args) { Console.WriteLine(SQL_INS_USER1.Length); // 126 Console.WriteLine(SQL_INS_USER2.Length); // 112 Console.WriteLine(SQL_INS_USER3.Length); // 86 }
这里能够看到三个字符串长度离别相差了,14=126-112和26=112-86,注重视察了,在代码编辑器中,SQL_INS_USER1 中第一个换行标记以后,我缩进13个空格(INSERT之前),而
SQL_INS_USER2 中第一个换行标记以后,我缩进25个空格(VALUES之前),
那末,加上一个换行符,刚刚好 14和26
云云编写代码,虽然进步了代码的清楚度和简便性,却无行中带来了另一个题目:字符长度!
许多场景下我们愿望字符串越短越好,如,经由过程ADO.NET 发送 SQL 语句给数据库实行。
所以照样慎用之!
二 标识符中的用法
在 C# 范例中, @ 能够作为标识符(类名、变量名、要领名等)的第一个字符,以许可C# 中保存关键字作为自身定义的标识符。
以下代码:
class @class { public static void @static(bool @bool) { if (@bool) System.Console.WriteLine("true"); else System.Console.WriteLine("false"); } } class Class1 { static void M() { cl\u0061ss.st\u0061tic(true); } }
注重,@虽然出现在标识符中,但不作为标识符自身的一部分。
因而,以上示例,定义了一个名为 class 的类,并包括一个名为 static 的要领,以及一个参数名为了 bool 的形参。
如许,关于跨言语的移植带来了方便。由于,某个单词在 C# 中作为保存关键字,但是在其他言语中或许不是。
以上就是C#中@用法的实例剖析的细致内容,更多请关注ki4网别的相干文章!