Какая разница между двойными кавычками и одиночной кавычкой в С#
Какая разница между двойными кавычками и одиночной кавычкой в С#?
Я закодировал программу для подсчета количества слов в файле
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);
}
}
}
Это дает мне ошибку из-за двойных кавычек. Мой учитель сказал мне использовать одинарную цитату, но он не сказал мне, почему. Итак, какова разница между двойными кавычками и одинарной кавычкой в С#?
Ответы
Ответ 1
Одиночные кавычки кодируют один символ (тип данных 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];
Ответ 2
когда вы говорите, строка s = "эта строка", тогда 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
}
Надеюсь, я больше вас не смутил!
Ответ 3
одиночная кавычка представляет один символ 'A'
, двойная кавычка добавляет нулевой ограничитель '\0'
в конец строкового литерала, " "
на самом деле " \0"
, который на один байт больше предполагаемого размера.
Ответ 4
Одиночные кавычки вместо двойных?
Где? Вот? if (text [i] == "")
текст [i] дает символ/байт, и это сравнивается с массивом (возможно, unicoded??) символов/байтов. Это не работает.
Скажите: сравните '1' с 1
или "1" с "одним"
или (2-1) с "eins"
как вы думаете, правильные ответы, или нет никакого значимого ответа в любом случае?
Кроме того: программа не будет работать очень хорошо с одинарными кавычками, например, с примером "words.txt" =
одно слово
или 2 слова или больше слов здесь?
Ответ 5
Вы ищете пробелы, это можно сделать как пробел в строке или как char. Поэтому, на мой взгляд, это сработает.
(Кстати, если файл содержит предложения с точками. И кто-то забыл добавить пробел после точки, слово не будет добавлено к общему количеству слов)