2012-09-26 3 views
-4

Что такое различаются между string.join & String.Concat так же, что это разница между String.equals & string.CompareПросто разница в C#

Покажите мне с каким-то примером для каждого. Я уже искал, но не понял.

Спасибо заранее.

+5

Вы читали страницы MSDN для каждого из этих методов? Если да, то что именно вы не понимаете? – ChrisF

ответ

0

Join сочетает в себе несколько строк с разделителем между ними; это чаще всего используется, если у вас есть список и вы хотите отформатировать его таким образом, чтобы между каждым элементом был разделитель (например, запятая). Concat просто добавляет их все за другим. В некотором смысле Join с пустым разделителем эквивалентен Concat.

Equals определяет, считаются ли две строки равными, Compare предназначен для определения порядка сортировки между двумя строками.

Честно говоря, все это очень хорошо описано в документации.

0

С .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 для любой конкатенации строк.

0

Программа, которая соединяет струны [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

0

эти два метода весьма взаимосвязаны. Хотя это не было сделано, равняется могли быть реализованы с использованием СотрагеТо:

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, но никакое правило не запрещает разные естественные заказы для других классов.

Смежные вопросы