C#中双引号和单引号的区别是什么

C#中的双引号和单引号有什么区别?

我编写了一个程序来计算一个文件中有多less个单词

using System; using System.IO; namespace Consoleapp05 { class Program { public static void Main(string[] args) { StreamReader sr = new StreamReader(@"C:\words.txt"); string text = sr.ReadToEnd(); int howmany = 0; int howmany2 = 0; for(int i = 0; i < text.Length; i++) { if(text[i] == " ") { howmany++; } } howmany2 = howmany + 1; Console.WriteLine("It is {0} words in the file", howmany2); Console.ReadKey(true); } } } 

这给了我一个错误,因为双引号。 我的老师告诉我要用单引号,但是他没有告诉我为什么。 那么C#中的双引号和单引号有什么区别呢?

单引号对单个字符(数据typeschar )进行编码,而双引号对多个字符的string进行编码。 差异类似于单个整数和整数数组之间的差异。

 char c = 'c'; string s = "s"; // String containing a single character. System.Diagnostics.Debug.Assert(s.Length == 1); char d = s[0]; int i = 42; int[] a = new int[] { 42 }; // Array containing a single int. System.Diagnostics.Debug.Assert(a.Length == 1); int j = a[0]; 

当你说string s =“this string”时,那么s [0]就是该string中特定索引处的char(在本例中为s [0] =='t')

所以要回答你的问题,使用双引号或单引号,你可以把以下内容看成是同样的意思:

 string s = " word word"; // check for space as first character using single quotes if(s[0] == ' ') { // do something } // check for space using string notation if(s[0] == " "[0]) { // do something } 

正如你所看到的,使用单引号来确定单个字符比试图将string转换为字符仅仅用于testing要容易得多。

 if(s[0] == " "[0]) { // do something } 

真的很喜欢说:

 string space = " "; if(s[0] == space[0]) { // do something } 

希望我不会更困惑你!

单引号表示单个字符'A' ,双引号在string文字的末尾附加一个空终止符'\0'" "实际上是" \0" ,比预期大小大一个字节。

单引号而不是双引号?

哪里? 这里? if(text [i] ==“”)

text [i]给出一个字符/字节,并将其与一个(可能是单字符的)字符/字节的数组进行比较。 那不太好。

说:比较'1'和1
或“1”与“one”或(2-1)与“eins”,你认为是正确的答案,还是没有有意义的答案呢?

除此之外:以单引号的方式,程序也不能很好地工作,例如“words.txt”=

一个字或两个字或更多的字在这里?

你正在寻找空间,这可以作为一个string中的空间或字符。 所以在我看来,这将工作。

(顺便说一下,如果文件包含带点的句子,而有人忘了在点后面加一个空格,那么这个词就不会被添加到总的单词量中)