Что такое различаются между string.join & String.Concat так же, что это разница между String.equals & string.CompareПросто разница в C#
Покажите мне с каким-то примером для каждого. Я уже искал, но не понял.
Спасибо заранее.
Что такое различаются между string.join & String.Concat так же, что это разница между String.equals & string.CompareПросто разница в C#
Покажите мне с каким-то примером для каждого. Я уже искал, но не понял.
Спасибо заранее.
Join
сочетает в себе несколько строк с разделителем между ними; это чаще всего используется, если у вас есть список и вы хотите отформатировать его таким образом, чтобы между каждым элементом был разделитель (например, запятая). Concat
просто добавляет их все за другим. В некотором смысле Join
с пустым разделителем эквивалентен Concat
.
Equals
определяет, считаются ли две строки равными, Compare
предназначен для определения порядка сортировки между двумя строками.
Честно говоря, все это очень хорошо описано в документации.
С .NET 4.0 String.Join() использует класс StringBuilder внутри, поэтому он более эффективен. В то время как String.Concat() использует базовую конкатенацию String с использованием «+», что, конечно же, не является эффективным подходом, поскольку String неизменен.
Я сравнивал String.Join() в среде .NET 2.0, где его реализация была другой (в .NET 2.0 она не использовала StringBuilder). Но с .NET 4.0 String.Join() внутренне использует StringBuilder(), поэтому он похож на легкую оболочку поверх StringBuilder() для конкатенации строк.
Microsoft даже рекомендует использовать класс StringBuilder для любой конкатенации строк.
Программа, которая соединяет струны [C#]
с использованием системы;
class Program
{
static void Main()
{
string[] arr = { "one", "two", "three" };
// "string" can be lowercase, or...
Console.WriteLine(string.Join(",", arr));
// ... "String" can be uppercase:
Console.WriteLine(String.Join(",", arr));
}
}
Выход - один, два, три один, два, три
Concat:
using System;
class Program
{
static void Main()
{
// 1.
// New string called s1.
string s1 = "string2";
// 2.
// Add another string to the start.
string s2 = "string1" + s1;
// 3.
// Write to console.
Console.WriteLine(s2);
}
}
Выход - string1string2
эти два метода весьма взаимосвязаны. Хотя это не было сделано, равняется могли быть реализованы с использованием СотрагеТо:
public boolean equals(Object o)
{
if (this == anObject)
{
return true;
}
if (o instanceof String)
{
String s = (String)o;
return compareTo(s) == 0;
}
return false;
}
Кроме того, s1.equals (s2) == TRUE означает s1.compareTo (s2) == 0 (и наоборот), и s1.equals (s2) == false означает s1.compareTo (s2)! = 0 (и наоборот).
Однако, это важно, это не обязательно для всех классов. Это для String, но никакое правило не запрещает разные естественные заказы для других классов.
Вы читали страницы MSDN для каждого из этих методов? Если да, то что именно вы не понимаете? – ChrisF