zoukankan      html  css  js  c++  java
  • C#中@的用法总结(转)

    引用地址:http://www.jb51.net/article/54185.htm

    本文实例汇总了C#中@的用法,对C#程序设计来说有不错的借鉴价值。具体如下:

    一 字符串中的用法

    1.学过C#的人都知道C# 中字符串常量可以以@ 开头声名,这样的优点是转义序列“不”被处理,按“原样”输出,即我们不需要对转义字符加上 (反斜扛),就可以轻松coding。如,

    1
    string filePath = @"c:DocsSourcea.txt" // rather than "c:\Docs\Source\a.txt"

    2.如要在一个用 @ 引起来的字符串中包括一个双引号,就需要使用两对双引号了。这时候你不能使用 来转义爽引号了,因为在这里 的转义用途已经被 @  “屏蔽”掉了。如,

    1
    @"""Ahoy!"" cried the captain."  // 输出为: "Ahoy!" cried the captain.

    这有点像SQL中的单引号常量处理方式:

    1
    2
    DECLARE @msg varchar(100)
    SET @msg = ''Ahoy!'' cried the captain.' -- 输出为: 'Ahoy!' cried the captain.

    3.@会识别换行符

    其实这个特性,我不知道怎么描述,只是偶然发现的,先来看看下面的代码:

    1
    2
    3
    4
    5
    6
    string script = @"
    <script type=""type/javascript"">
    function doSomething()
    {
    }
    </script>";

    这段代码在cs文件中写js,结构就很清晰了,正常情况我们是这样coding的:

    1
    string script2 = "<script type="type/javascript">function doSomething(){}</script>";

    或者:

    1
    2
    3
    4
    string script3 =
    "<script type="type/javascript">" +
    "function doSomething(){ " +
    "}</script>";

    通常我们会选择后者,因为js代码一般比较长,或者方法体很大,或者需要连接其他变量,这样结构比较清晰。

    注意:如果“拼接”的次数很多,应该考虑使用StringBuilder了,有助于提高性能。

    还有一种场景,也很常见,在程序中拼接 SQL 语句,如

    1
    2
    3
    private const string SQL_INS_USER = @"
    INSERT INTO t_User([UserName], [Password], Email) 
     VALUES(@UserName, @Password, @Email)";

    这样就像写存储过程一般,保持相当高的代码清晰度。然而,我们需要关注一个问题:字符串长度看下面的测试代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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# 中保留关键字作为自己定义的标识符。

    如下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class @class
    {
      public static void @static(bool @bool) {
       if (@bool)
         System.Console.WriteLine("true");
       else
         System.Console.WriteLine("false");
      }  
    }
    class Class1
    {
      static void M() {
       clu0061ss.stu0061tic(true);
      }
    }

    注意,@虽然出现在标识符中,但不作为标识符本身的一部分。
    因此,以上示例,定义了一个名为 class 的类,并包含一个名为 static 的方法,以及一个参数名为了 bool 的形参。

    这样,对于跨语言的移植带来了便利。因为,某个单词在 C#  中作为保留关键字,但是在其他语言中也许不是。

     
  • 相关阅读:
    UVa 1151 Buy or Build【最小生成树】
    UVa 216 Getting in Line【枚举排列】
    UVa 729 The Hamming Distance Problem【枚举排列】
    HDU 5214 Movie【贪心】
    HDU 5223 GCD
    POJ 1144 Network【割顶】
    UVa 11025 The broken pedometer【枚举子集】
    HDU 2515 Yanghee 的算术【找规律】
    Java基本语法
    Java环境变量,jdk和jre的区别,面向对象语言编程
  • 原文地址:https://www.cnblogs.com/javalinux/p/14975377.html
Copyright © 2011-2022 走看看