Подтвердить что ты не робот

Какая разница между двойными кавычками и одиночной кавычкой в ​​С#

Какая разница между двойными кавычками и одиночной кавычкой в ​​С#?

Я закодировал программу для подсчета количества слов в файле

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);
        }
    }
}

Это дает мне ошибку из-за двойных кавычек. Мой учитель сказал мне использовать одинарную цитату, но он не сказал мне, почему. Итак, какова разница между двойными кавычками и одинарной кавычкой в ​​С#?

4b9b3361

Ответ 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. Поэтому, на мой взгляд, это сработает.

(Кстати, если файл содержит предложения с точками. И кто-то забыл добавить пробел после точки, слово не будет добавлено к общему количеству слов)