String vs string
FYI: Esses são meus pensamentos com base em anos de experiência com .NET, mas Rafael isso é básico? nem tanto, e irei te mostrar o porque!
Isso não é um Deep-Dive sobre tipos em .NET!
Preferência
using System;
namespace Exemplo
{
class Program
{
static void Main(string[] args)
{
String str1 = "Exemplo";
string str2 = "Exemplo";
Console.WriteLine(str1);
Console.WriteLine(str2);
// Output:
// Exemplo
// Exemplo
}
}
}
Para o exemplo acima, ambos produzem os mesmos valores, alguma diferença?
a resposta é Não, até eu remover o Namespace System.
Essa já é basicamente uma das vantagens em utilizar palavras-chave, háaa, mas eu posso escolher o que eu quiser, claro, quem vai dar manuntenção em seu projeto sem dúvidas é você, os problemas de segurança também são de sua responsabilidade, só não fale que isso é apenas uma simples interpretação de code style(estilo de código/perfumaria), isso está muito mais para semâtica de código, como falei a segurança é de sua responsabilidade, para não ficar em poucas palavras vamos imaginar o seguinte cenário:
using System;
namespace Exemplo
{
class String
{
public static implicit operator String(string str) => null;
}
class Program
{
static void Main(string[] args)
{
String str1 = "Exemplo"; // Classe que escrevi
string str2 = "Exemplo";
Console.WriteLine(str1 is System.String); // False
Console.WriteLine(str2 is System.String); // True
Console.WriteLine(str1); // NULL
Console.WriteLine(str2); // Exemplo
}
}
}
Observe no código acima que eu adicionei o namespace System e escrevi uma simples classe String:
class String
{
public static implicit operator String(string str) => null;
}
Bom, talvez isso poderá lhe causar algumas dores de cabeça, implementamos diariamente inúmeras bibliotecas de terceiros e na maioria das vezes não conhecemos de forma mais aprofundada sua implementação, então basicamente podemos cair em armadilhas.
Também não estou dizendo que deverá conhecer... mas sem dúvidas pode nos custar algum tempo para analisar o problema até encontrar o motivo.
O problema
Basicamente o que fiz acima foi simular um problema que aparentemente era inofensivo, com poucas linhas de código produzimos uma classe que implicitamente recebe uma string de forma idêntica ao System.String.
Meu conselho
Eu já falei que a decisão é sua, mas se quiser seguir um conselho, use palavras-chave quando puder, e evite surpresas!
Palavras chaves C#, clique aqui!
De uma forma resumida são palavras que você não poderá usar como nome de variáveis em nenhuma parte de seu código, a não ser que use @ antes do nome da variável, veja um exemplo abaixo.
Deixe um comentário