2009-03-02 37 views
53

¿Cuál es la diferencia entre comillas dobles y comillas simples en C#?¿Cuál es la diferencia entre comillas dobles y comillas simples en C#

que codifica un programa para contar cuántas palabras están en un archivo

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

Esto me da un error debido a las comillas dobles. Mi maestro me dijo que usara solo comillas, pero no me dijo por qué. Entonces, ¿cuál es la diferencia entre comillas dobles y comillas simples en C#?

+6

¿No es 'Usted, señor, es un idiota'? :-) – RuudKok

+3

@RuudKok Esa es la broma;) – Houssni

Respuesta

115

Las comillas simples codifican un solo carácter (tipo de datos char), mientras que las comillas dobles codifican una cadena de caracteres múltiples. La diferencia es similar a la diferencia entre un entero simple y una matriz de números enteros.

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]; 
+4

+1 para la respuesta más simple que he encontrado en esto. Correcto, y al punto. –

+0

Vota por el uso de int :) – Jamaxack

1

¿Cotizaciones individuales en lugar de las dobles?

¿Dónde? ¿Aquí? if (text [i] == "")

text [i] da un carácter/byte y esto se compara con una matriz de (probablemente unicoded ??) caracteres/bytes. Eso no funciona bien.

Di: comparar '1' con 1
o "1" con "uno" o (2-1) con "eins" lo que cree que son las respuestas correctas, o no hay ninguna respuesta significativa de todos modos ?

Además de eso: el programa no va a funcionar muy bien con comillas simples o bien, dado el ejemplo "words.txt" =

una palabra o 2 palabras o palabras más acá?

0

usted está buscando espacios, esto se puede hacer como un espacio en una cadena o como un char. Entonces, en mi opinión, esto funcionaría.

(Por cierto, si el archivo contiene frases con puntos. Y alguien se olvidó de añadir un espacio después del punto, la palabra no se añadirá a la cantidad total de palabras)

7

cuando dices cadena s = "this string" then s [0] es un char en un índice específico en esa cadena (en este caso s [0] == 't')

Para responder a su pregunta, use comillas dobles o comillas simples , puede pensar lo siguiente como que significa lo mismo:

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 
} 

Como puede ver, usando una sola cita para determinar un único carácter es mucho más fácil que tratar de convertir nuestro texto en un carácter para las pruebas.

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

es realmente como decir:

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

suerte que no te confunden más!

2

la comilla simple representan un solo carácter 'A', comillas dobles anexar un terminador nulo '\0' hasta el final de la cadena literal, es en realidad " "" \0" que es un byte más grande que el tamaño previsto.

Cuestiones relacionadas