C#中双引号和单引号之间有什么区别?
我编写了一个程序来计算文件中有多少个单词
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#中双引号和单引号之间的区别是什么?
答案 0 :(得分:132)
单引号编码单个字符(数据类型char
),而双引号编码多个字符的字符串。差异类似于单个整数和整数数组之间的差异。
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];
答案 1 :(得分:8)
当你说string s =“this string”时,s [0]是该字符串中特定索引处的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
}
正如您所看到的,使用单引号来确定单个char比尝试将字符串转换为char以进行测试要容易得多。
if(s[0] == " "[0]) {
// do something
}
真的很喜欢说:
string space = " ";
if(s[0] == space[0]) {
// do something
}
希望我没有更多地混淆你!
答案 2 :(得分:3)
单引号表示单个字符'A'
,双引号将空终止符'\0'
附加到字符串文字的末尾," "
实际上是" \0"
,这是一个字节大于预期的大小。
答案 3 :(得分:0)
单引号而不是双引号?
在哪儿?这里? if(text [i] ==“”)
text [i]给出一个字符/字节,并将其与一组(可能是unicoded ??)字符/字节进行比较。这不太好用。
说:比较'1'和1
或“1”与“一”
或(2-1)与“eins”
您认为正确的答案是什么,或者无论如何都没有有意义的答案?
除此之外:对于单引号,程序也不能很好地工作,例如“words.txt”=
一个字 或2个字或 这里有更多的话?答案 4 :(得分:0)
您正在寻找空格,这可以作为字符串中的空格或char来完成。所以我觉得这样可行。
(顺便说一下,如果文件中包含带点的句子。有人忘了在点后面添加一个空格,那么这个单词就不会被添加到单词总数中)