C# 支持两种形式的字符串:规则字符串和逐字字符串(@字符串)

  规则字符串由包含在双引号中的零个或多个字符组成(如
"hello"),并且可以包含简单转义序列(如表示制表符的 \t)、十六进制转义序列和 Unicode 转义序列。

  逐字字符串由 @
字符后跟开始的双引号字符、零个或多个字符以及结束的双引号字符组成。一个简单的示例就是
@"hello"。在逐字字符串中,分隔符之间的字符逐字解释,唯一的例外是“引号转义序列”。具体说来,在逐字字符串中不处理简单转义序列以及十六进制 和
Unicode 转义序列。逐字字符串可以跨多行。

  规则字符串字符中跟在反斜杠字符 (\)
后面的字符必须是下列字符之一:‘、"、\、0、a、b、f、n、r、t、u、U、x、v。否则将发生编译时错误。

示例

string a = "hello,
world";                 
// hello, world
string b = @"hello,
world";              
// hello, world
string c = "hello \t
world";              
// hello     world
string d = @"hello \t
world";              
// hello \t world
string e = "Joe said \"Hello\" to
me";      // Joe said "Hello" to me
string f =
@"Joe said ""Hello"" to me";   // Joe said "Hello" to me
string g
= "
\\\\server\\share\\file.txt";   // \\server\share\file.txt
string h = @"
\\server\share\file.txt";      //
\\server\share\file.txt
string i = "one\r\ntwo\r\nthree";

string j = @"one
two
three";

显示了各种不同的字符串。最后一个字符串 j
是跨多行的逐字字符串。引号之间的字符(包括空白,如换行符等)也逐字符保留。

由于十六进制转义序列可以包含数目可变的十六进制数字,因此字符串
"\x123" 只包含一个具有十六进制值 123 的字符。若要创建一个包含具有十六进制值 12 的字符,后跟一个字符 3 的字符串,可以改写为
"\x00123" 或 "\x12" + "3"。

“字符串”的类型为
string。

每个字符串不一定产生新的字符串实例。当根据字符串相等运算符确认为相等的两个或更多个字符串出现在同一个程序集中时,这些字符串引用相同的字符串实例。例如,

class Test
{
  static void
Main() {
  object a = "hello";
  object b = "hello";

  System.Console.WriteLine(a == b);

  }
}

产生的输出为
True,这是因为两个字符串引用相同的字符串实例。

C# 支持两种形式的字符串:规则字符串和逐字字符串(@字符串),布布扣,bubuko.com

时间: 2024-12-16 05:47:55

C# 支持两种形式的字符串:规则字符串和逐字字符串(@字符串)的相关文章

MyBatis collection的两种形式——MyBatis学习笔记之九

与association一样,collection元素也有两种形式,现介绍如下: 一.嵌套的resultMap 实际上以前的示例使用的就是这种方法,今天介绍它的另一种写法.还是以教师映射为例,修改映射文件TeacherMapper.xml如下(点击此处进入嵌套resultMap形式的示例源码下载页面.注:本示例代码是在修改本系列的上篇博文示例代码的基础上完成的,用到了MapperScannerConfigurer和注解等知识.对这些知识不熟悉的读者,可参考上篇博文:http://legend20

include的两种形式与介绍

include的另种形式和区别先简单的说下include的两种形式:<% include file="" %>:为静态包含(加载)<jsp:include page="" flush="true" />:为动态包含(加载) 简单来解释一下静态包含和和动态包含:静态包含:JSP编译器编译的时候已经包含好相应的文件,生成一个java_servlet,对应的Servlet文件中已经包含了被包含的页面,然后javac编译成一个cl

Linux 下wdcp支持两种安装方式

wdcp支持两种安装方式1 源码编译 此安装比较麻烦和耗时,一般是20分钟至一个小时不等,具体视机器配置情况而定2 RPM包安装 简单快速,下载快的话,几分钟就可以完成源码安装(ssh登录服务器,执行如下操作即可,需root用户身份安装)wget http://dl.wdlinux.cn:5180/lanmp_laster.tar.gztar zxvf lanmp_laster.tar.gzsh install.sh4个可选安装1,2,3 是安装独立的环境,不可自由切换nginx,apache,

爪哇国新游记之十二----线程创建的两种形式

public class Thread1 extends Thread{ public void run(){ int i=0; while(i<10){ i++; System.out.println(i); } } public static void main(String[] args){ Thread1 t=new Thread1(); t.start(); } } public class Thread2 implements Runnable{ @Override public v

C++:一般情况下,设计函数的形参只需要两种形式

C++:一般情况下,设计函数的形参只需要两种形式.一,是引用形参,例如 void function (int &p_para):二,是常量引用形参,例如 void function(const int &p_para). 它们的特点如下: # 引用形参适用于需要改变变量数据的情况,常量引用形参适用于不需要改变对象.变量数据的情况. # 引用形参需要对象.变量来传递值,常量引用形参则不需要,可以直接传递表达式或者函数返回值. 通过这两种方式可以涵盖所有可能需要的设计情况,而通过这种方式实现的

重连通量的邻接矩阵和邻接表两种形式的求法

邻接矩阵: #include <cstdio> #include <cstring> #include <stack> using namespace std; #define min(a,b) a<b?a:b #define N 105 int dfn[N],low[N],mat[N][N],visit[N],tmpdfn,n; struct Edge{ int x,y; void print(){ printf("%d-%d\n",x,y)

SQL关于apply的两种形式cross apply和outer apply(转载)

SQL 关于apply的两种形式cross apply 和 outer apply apply有两种形式: cross apply 和 outer apply 先看看语法: <left_table_expression>  {cross|outer} apply <right_table_expression> 再让我们了解一下apply运算涉及的两个步骤: A1:把右表表达式(<right_table_expression>)应用到左表(<left_table_

MyBatis association的两种形式——MyBatis学习笔记之四

一.嵌套的resultMap 这 种方法本质上就是上篇博文介绍的方法,只是把教师实体映射从association元素中提取出来,用一个resultMap元素表示.然后 association元素再引用这个resultMap元素.修改上篇博文示例的StudentMapper.xml如下: <?xml version="1.0" encoding="utf8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org

AngularJS的日期格式化有两种形式

AngularJS的日期格式化有两种形式,一种是在HTML页面,一种是在JS代码里,都是用到AngularJS的过滤器$filter. HTML: date_expression 即 你在$scope中设的date类型变量(注意,一定是date object才正确), 也是要显示出来的日期,|是分割符号,分割符号后面的第一个参数date是指明过滤器类型是过滤日期的,第二个参数format是你的日期要格式化成什么样子,比如yyyy-MM-dd,最后timezone一个是时区(可选参数),对于国际化