Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Declarar uma string
  2. Acessar caracteres em strings
  3. Percorrer uma string
  4. Quantidade de caracteres
  5. Concatenar strings
  6. Comparar strings
  7. Copiando strings
  8. Verificando strings
  9. String como parâmetro/argumento e retorno
  10. Propriedades classe String
  11. Outros tipos de comparação
  12. Métodos String

O tipo de dado string é uma cadeia de caracteres justapostos. Abaixo uma abstração da representação de uma string em um local de memória. Em C# utilizamos a palavra reservarda String ou string para declarar uma variável desse tipo.

0 1 2 3 4 5
's' 't' 'r' 'i' 'n' 'g'

Para a declaração de um string em C#, utilizamos a sintaxe A abaixo que apresenta também a atribuição.

Sintaxe A
string nome_variavel; //null

string nome_variavel = "uma string CSharp";

string nome_variavel = new String("string");

string nome_variavel = { 'char1', 'char2', 'charN', ... };

string nome_variavel = new String('char', quantidade); //elementos repetidos

string nome_variavel = new("string"); //Nome classe omitido
Onde
-
Exemplo 1
using System;

public class HelloWorld
{
    public static void Main(string[] args)
    {
        string str1; //null
        string str2 = "C#";
        char[] str3 = {'u','m','a',' ','s','t','r','i','n','g'};
        string str4 = ""; //vazia
        string str5 = String.Empty; //vazia. Boa prática
    }
}
Saída
-

Em C#, uma string é imutável. Sendo assim, não podemos alterar seu conteúdo utilizando o indexador [] como pode ser visto no exemplo abaixo:

Exemplo 2
using System;		
public class Program
{
	public static void Main()
	{
		string str = "string";
	 	Console.Write(str[0]);
		str[0] = 'S';
		Console.Write(str[1]);
	}
}
Saída
Compilation error (line 9, col 3): Property or indexer 'string.this[int]' cannot be assigned to -- it is read only.

Podemos acessar os elementos de uma string de forma semelhante a um array de caracteres. O acesso é feito utilizando a posição ou índice do caracter que é passado como argumento para o indexador [].

Sintaxe
variavel_string[indice];
Exemplo 3
using System;		
public class Program
{
	public static void Main()
	{
		string str = "string";

	 	Console.Write(str[0]);
		Console.Write(str[1]);
		Console.Write(str[2]);
	}
}
Saída
str

O tamanho de uma string pode ser conferido utilizando a sua propriedade chamada Length que retorna o número de seus caracteres.

Sintaxe
variavel_string.Length; 
Exemplo 4
using System;	
public class Program
{
	public static void Main()
	{
		string str = "string";

		Console.WriteLine(str.Length);
	}
}
Saída
6

O tamanho(size) em bytes de uma string dependende diretamente da codificação utilizada como ascii, ansi, utf-8 ou outra, por exemplo.

Para percorrer todos os caracteres de uma string, podemos utilizar o comando de repetição foreach ou for.

Sintaxe
foreach (tipo_dado nome_variavel in variave_string)
{
  //seu codigo aqui
}
Exemplo 5
using System;
					
public class Program
{
	public static void Main()
	{
		string str = "string";

		foreach ( char chr in str)
			Console.Write(chr);
	}
}
Saída
string

Para concatenarmos strings em C#, utilizamos o operador aritmético (+). No contexto string, esse operador é chamado concatenador. Uma nova string é gerada e retornada como resultado de uma ou mais concatenações.

Para concatenação em massa, devemos utilizar a classe C#: StringBuilder por questões de performance e melhor uso de memória.

Sintaxe
variavel_string = string1 + string2;

string1+=string2;
Exemplo 6
using System;		
public class Program
{
	public static void Main()
	{
		string str1 = "string";
		string str2 = "concatenada";
		
		string concat = str1 + " " + str2;
	 	Console.Write(concat);
	}
}
s
Saída
string concatenada

As strings na linguagem C# podem ser comparadas utilizando os operadores (==) e (!=), e os métodos CompareTo e Equals.

A comparação de string leva em consideração string maísculas e minúsculas, codificação e cultura utilizadas.

Sintaxe:
string1 == string2

string1 != string2

String.Equals(string? a, string? b);

var_string.CompareTo(string? b)
Retorno
true se e a e b forem nulos
true se a/var_string igual à b, false caso contrário
Exemplo 7
using System;	
public class Program
{
	public static void Main()
	{
		string str1 = "ABCD";
		string str2 = "ABCD";
		Console.WriteLine(str1 == str2);
		Console.WriteLine(str1 != str2);

        Console.WriteLine(String.Equals(str1,str2));
        Console.WriteLine(str1.CompareTo(str2));
	}
}
Saída
True
False
True
True

A cópia de string em C# pode ser feita utilizando o construtor String ou os métodos Copy e Clone. Esses retornam um o novo objeto string contendo a string copiada.

Sintaxe:
string nova_string = new String(variavel_string)

String.Copy(variavel_string); //Uso não recomendado

(string)variavel_string.Clone()
Retorno
nova string
Exemplo 8
using System;

class HelloWorld 
{
  static void Main() 
  {
	   string str = new String("uma string");
	   Console.WriteLine(String.Copy(str));
	   Console.WriteLine(str.Clone());
  }
}
Saída
uma string
uma string

Para verificar se uma string está vazia ou não iniciada(null), usamos o método IsNullOrEmpty. Caso uma string contenha apenas caracteres ou não também não iniciada, usamos o método IsNullOrWhiteSpace.

Sintaxe:
String.IsNullOrEmpty(string s)

String.IsNullOrWhiteSpace(string s)
Retorno
nova string
Exemplo 9
class HelloWorld 
{
  static void Main() 
  {
	   string str1 = new String("uma string");
	   string str2 = String.Empty;
	   string str3 = "  ";
	   Console.WriteLine(String.IsNullOrEmpty(str1));
	   Console.WriteLine(String.IsNullOrEmpty(str2));
	   Console.WriteLine(String.IsNullOrWhiteSpace(str3));
  }
}
Saída
False
True
True

Há outros métodos para verificação de elementos em string que serão vistos mais adiante na seção sobre métodos.

Para realizar operações mais complexas em strings, a classe String do .NET fornece os métodos listados na tabela abaixo:

Método Descrição -
Clone Retorna uma nova string
Compare Compara string -
CompareTo Compara string -
Concat Concatena string
Contains Verifica se string contém elemento -
CopyTo Copia uma string -
Create -
EndsWith Verifica se string termina com elemento -
EnumerateRunes -
Equals Compara strings
Format Retorna uma string formatada -
GetEnumerator Retorna enumerador -
GetHashCode Retorna código hash -
GetPinnableReference -
GetType Retorna o tipo
GetTypeCode - -
IndexOf Retorna índice de elemento
IndexOfAny - -
Insert Insere elemento em uma posição
Intern -
IsInterned -
IsNormalized -
IsNullOrEmpty Verifica se string é nula ou vazia -
IsNullOrWhiteSpace Verifica se string é nula ou possui apenas espaços em branco
LastIndexOf Retorna último índice de um elemento
LastIndexOfAny -
MemberwiseClone -
Normalize -
PadLeft Retorna string preenchida à esquerda
PadRight Retorna string preenchida à direita -
Remove Remove elemento de string -
Replace Substitui elemento
ReplaceLineEndings -
Split Separa string em partes/palavras
StartsWith Verifica se string inicia com prefixo
Substring Retorna parte de uma string -
ToCharArray Converte para array de char
ToLower Transforma string para minúscula
ToLowerInvariant - -
ToString - -
ToUpper Transforma string para maiúscula -
ToUpperInvariant - -
Trim Remove caracteres do início e fim -
TrimEnd Remove caracteres do início -
TrimStart Remove caracteres do fim -
TryCopyTo - -
  1. 07/08/2025 - revisão 2 - Ajustes: pontuais, sintaxes, descrição 'métodos' e ir p/ 'topo'; Adição: 'Copiando' e 'Verificando'
  2. 14/10/2024 - revisão 1 - Correção: Sintaxe A; Ajustes gramaticais pontuais
  3. 07/03/2024 - versão inicial