文档章节

C#中的多行字符串文字

j
 javail
发布于 2019/12/14 18:27
字数 720
阅读 6
收藏 0

有没有一种简单的方法可以在C#中创建多行字符串文字?

这是我现在所拥有的:

string query = "SELECT foo, bar"
+ " FROM table"
+ " WHERE id = 42";

我知道PHP有

<<<BLOCK

BLOCK;

C#是否有类似的东西?


#1楼

您可以在string前面使用@符号来形成逐字字符串文字

string query = @"SELECT foo, bar
FROM table
WHERE id = 42";

使用此方法时,除了双引号(如Jon Skeet的答案所示)外,您也不必转义特殊字符


#2楼

它在C#中称为逐字字符串文字 ,只是在文字之前加上@即可。 这不仅允许多行,而且还关闭转义。 因此,例如,您可以执行以下操作:

string query = @"SELECT foo, bar
FROM table
WHERE name = 'a\b'";

但是,这包括换行符(使用您的源使用的任何换行符)到字符串中。 对于SQL来说,这不仅无害,而且可能会在您看到字符串的任何地方提高可读性-但在其他地方,则可能不需要它,在这种情况下,您无需使用多行逐字字符串字面量,或从结果字符串中删除它们。

转义的唯一点是,如果要双引号,则必须添加一个额外的双引号:

string quote = @"Jon said, ""This will work,"" - and it did!";

#3楼

要注意的另一个陷阱是在string.Format中使用字符串文字。 在这种情况下,您需要将花括号/括号“ {”和“}”转义。

// this would give a format exception
string.Format(@"<script> function test(x) 
      { return x * {0} } </script>", aMagicValue)
// this contrived example would work
string.Format(@"<script> function test(x) 
      {{ return x * {0} }} </script>", aMagicValue)

#4楼

我发现使用字符串文字的问题在于,它会使您的代码看起来有些“ 怪异 ”,因为为了不在字符串本身中获得空格,必须将其完全左对齐:

    var someString = @"The
quick
brown
fox...";

uck

因此,我喜欢使用的解决方案使所有内容与其余代码保持一致:

var someString = String.Join(
    Environment.NewLine,
    "The",
    "quick",
    "brown",
    "fox...");

当然,如果您只想按逻辑方式拆分SQL语句的行,而实际上并不需要新行,则始终可以只将Environment.NewLine替换为" "


#5楼

我还没有看到它,所以我将其发布在这里(如果您有兴趣传递字符串,您也可以这样做。)这个想法是您可以将字符串分解成多行并添加自己的内容(也多行)以您希望的任何方式。 在这里,“ tableName”可以传递到字符串中。

    private string createTableQuery = "";

    void createTable(string tableName)
    {

         createTableQuery = @"CREATE TABLE IF NOT EXISTS
                ["+ tableName  + @"] (
               [ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
               [Key] NVARCHAR(2048)  NULL, 
               [Value] VARCHAR(2048)  NULL
                                )";
    }

本文转载自:https://ko.sofbug.com/question/4cE8

j
粉丝 4
博文 783
码字总数 0
作品 0
深圳
私信 提问
Visual C# .NET 2003 语言的改变

Visual C# .NET 2003 语言的改变 Prashant Sridharan Microsoft Corporation 2002年12月30日 适用于: Microsoft Visual Studio® C# 2003 摘要:为了与欧洲计算机制造商协会 (ECMA) 的 C# 规...

晨曦之光
2012/03/09
101
0
【C#懒蛋编程——5分钟经验分享】03使用Description特性标签,简化查找表编写

因为篇幅很短,所以尝试全文字写法。几分钟看完的文字也没必要用十几分钟写完是吧。 Attribute(特性标签)是C#中非常有用的一个特性,有用到什么程度呢?以至于C++的很多开发者,都通过自己的...

老G
2018/08/12
0
0
Python3学习笔记 - day1

前言 本文不是一篇系统的从零开始学习Python的教程,如果你需要从零开始学习Python,中这部分将是比较好的一种选择,如果你英语比较好,也可以在国外的一些网站上找到优质的教学视频(比如某...

无上@诀
2017/12/04
0
0
学习C#中的字符串string

洗脑价值观 by 杂学的程序员 人类有了文字,就可以记录下来历史了,而计算机有了字符串,黑客们的历史也就开始了. C#定义了一个基本的类string, 专门用于对字符串的操作。记住,它是引用类型. 这...

杂学的程序员
2018/06/11
0
0
【全代码攻略】用百度大脑手写文字识别助力企业降本增效

一、需求描述: 信息智能化时代,大部分中小企业都用上了ERP等办公软件,数字化纸质内容,软件化管理数据,做到无纸化办公。但仔细观察,中小企业还是有一些工作流程可以进行改进的。 例如,...

AIBOOM
2019/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

WPF中的StaticResource和DynamicResource有什么区别?

在WPF中使用画笔,模板和样式等资源时,可以将它们指定为StaticResources <Rectangle Fill="{StaticResource MyBrush}" /> 或者作为DynamicResource <ItemsControl ItemTemplate="{DynamicR......

javail
28分钟前
49
0
Day07继承中的面试题 答案

1. 每一个构造方法的第一条语句默认都是:super() Object类最顶层的父类。 class Zi extends Fu{ public int num = 20; public Zi(){ //super(); System.out.println("zi"); } 2.class Test......

Lao鹰
34分钟前
42
0
每天AC系列(四):四数之和

1 题目 Leetcode第18题,给定一个数组与一个target,找出数组中的四个数之和为target的不重复的所有四个数. 2 暴力 List<List<Integer>> result = new ArrayList<>();if (nums.length == 4 &......

Blueeeeeee
44分钟前
54
0
git clone --mirror和git clone --bare有什么区别

git clone帮助页面上有关于--mirror : 设置远程存储库的镜像。 这意味着--bare 。 但没有详细介绍--mirror克隆与--bare克隆--mirror不同。 #1楼 克隆将从远程服务器复制参考,并将其填充到名...

技术盛宴
59分钟前
72
0
代码生成器技术乱弹二十六,未来之野望,未实现的功能:动态Controller名字后缀

现在,光1.5.0的Controller后缀是固定的。比如:UserController, PrivilegeController之类的。而动态Controller名字后缀功能实现后,您只需要定义 controllernamingsuffix:Adaoter Control...

火箭船
今天
53
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部