Qual é a diferença entre Convert.ToString()
e .ToString()
?
Encontrei muitas diferenças online, mas qual é a principal diferença?
c#
type-conversion
tostring
TinTin
fonte
fonte
Respostas:
Convert.ToString()
alçasnull
, enquantoToString()
não.fonte
null
retornar uma string vazia ou lançar uma exceção? É como a diferença entre transmitir e usaras
: conversão silenciosa.A chamada
ToString()
de um objeto pressupõe que o objeto não seja nulo (já que um objeto precisa existir para chamar um método de instância).Convert.ToString(obj)
não precisa presumir que o objeto não é nulo (como é um método estático na classe Convert), mas retornaráString.Empty
se for nulo.fonte
Convert.ToString(string value)
retornanull
se o argumento fornull
.Convert.ToString(object value)
retornaString.Empty
se o argumento fornull
.Além de outras respostas sobre como manipular
null
valores,Convert.ToString
tenta usarIFormattable
e fazerIConvertible
interfaces antes de chamar a baseObject.ToString
.Exemplo:
Resultado:
fonte
IConvertible
tem precedênciaIFormattable
, o que, por sua vez, tem precedência sobre aObject.ToString()
implementação.Vamos entender a diferença através deste exemplo:
Podemos converter o número inteiro
i
usandoi.ToString ()
ouConvert.ToString
. Então qual a diferença?A diferença básica entre eles é que a
Convert
função manipula NULLS enquantoi.ToString ()
não; ele lançará um erro de exceção de referência NULL. Portanto, como uma boa prática de codificação, o usoconvert
é sempre seguro.fonte
Você pode criar uma classe e substituir o
toString
método para fazer o que quiser.Por exemplo, você pode criar uma classe "MyMail" e substituir o
toString
método para enviar um email ou executar outra operação em vez de escrever o objeto atual.O
Convert.toString
converte o valor especificado em sua representação de sequência equivalente.fonte
fonte
Os métodos são "basicamente" os mesmos, exceto manipulação nula .
Do MSDN:
Método Convert.ToString
Object.ToString
fonte
null
,""
Ou"null"
?Em
Convert.ToString()
, o Convert manipula umNULL
valor ou não, mas.ToString()
nele não manipula umNULL
valor e umNULL
erro de exceção de referência. Portanto, é uma boa prática usarConvert.ToString()
.fonte
Para os amantes do código, esta é a melhor resposta.
fonte
Eu concordo com a resposta de @ Ryan . A propósito, começando com o C # 6.0 para esse fim, você pode usar:
ou
ao invés de
fonte
ToString()
não pode manipular valores nulos econvert.ToString()
pode manipular valores nulos; portanto, quando você deseja que seu sistema manipule o uso de valores nulosconvert.ToString()
.fonte
Convert.ToString(strName)
manipulará valores nulos estrName.Tostring()
não manipulará valores nulos e lançará uma exceção.Então é melhor usar
Convert.ToString()
então.ToString();
fonte
Ambos são usados para converter um tipo específico em string, ou seja, int em string, flutuar em string ou um objeto em string.
ToString()
não pode manipular nulo enquanto no caso comConvert.ToString()
manipulará valor nulo.Exemplo:
fonte
Convert.ToString
não manuseieNull Exception
. simplesmente faz:return value == null ? string.Empty : value.ToString()
Para entender os dois métodos, vamos dar um exemplo:
Aqui, os dois métodos são usados para converter a string, mas a diferença básica entre eles é: a
Convert
função manipulaNULL
, enquantoi.ToString()
isso não gera umNULL reference exception error.
So, pois as boas práticas de codificaçãoconvert
são sempre seguras.Vamos ver outro exemplo:
fonte
Convert.ToString(value)
primeiro tenta lançar obj para IConvertible , depois IFormattable para chamar osToString(...)
métodos correspondentes . Se, em vez disso, o valor do parâmetro foinull
retornadostring.Empty
. Como último recurso, retorneobj.ToString()
se nada mais funcionar.Vale ressaltar que
Convert.ToString(value)
pode retornarnull
se, por exemplo,value.ToString()
retornar nulo.Consulte Fonte de referência .Net
fonte
eu escrevi este código e compilei.
usando 'engenharia reversa' ( ilspy ), descubro 'object.ToString ()' e 'Convert.ToString (obj)' fazem exatamente uma coisa. de fato 'Convert.ToString (obj)' chame 'object.ToString ()' so 'object.ToString ()' é mais rápido.
fonte
Em C #, se você declarar uma variável de sequência e se não atribuir nenhum valor a essa variável, por padrão, essa variável assumirá um valor nulo. Nesse caso, se você usar o método ToString (), seu programa lançará a exceção de referência nula. Por outro lado, se você usar o método Convert.ToString (), seu programa não lançará uma exceção.
fonte
Convert.Tostring()
basicamente chama apenas o seguintevalue == null ? String.Empty: value.ToString()
(string)variable
será transmitido somente quando houver um operador implícito ou explícito no que você está transmitindoToString()
pode ser substituído pelo tipo (ele tem controle sobre o que faz); caso contrário, resulta no nome do tipoObviamente, se um objeto for nulo , você não poderá acessar o membro da instância
ToString()
, ele causará uma exceçãofonte
A função Convert.Tostring () lida com o NULL, enquanto o método .ToString () não. visite aqui .
fonte