Оператор ==
проверяет, указывают ли две ссылки на один и тот же объект или нет. .equals()
проверьте фактическое содержимое строки (значение).
Обратите внимание, что метод .equals()
принадлежит классу Object
(суперкласс всех классов). Вам необходимо переопределить его в соответствии с вашим требованием к классу, но для String оно уже реализовано и проверяет, имеет ли две строки одно и то же значение.
String s1 = "Stack Overflow";
String s2 = "Stack Overflow";
s1 == s2; //true
s1.equals(s2); //true
Причина: строка литералы, созданные без нуля, хранятся в пуле строк в области перментонов кучи. Таким образом, оба s1 и s2 указывают на один и тот же объект в пуле. String s1 = new String("Stack Overflow");
String s2 = new String("Stack Overflow");
s1 == s2; //false
s1.equals(s2); //true
Причина. Если вы создаете объект String с использованием ключевого слова new
, ему выделяется отдельное пространство в куче. Если Вы не хотите использовать LINQ, можно сделать:
Dim foo As String = "a,b,c,d,e"
Dim boo As New List(Of String)(foo.Split(","c))
Можно использовать конструктора Списка.
String foo = "a,b,c,d,e";
List<String> boo = new List<String>(foo.Split(","));
При использовании Linq можно использовать ToList () дополнительный метод
Dim strings As List<string> = string_variable.Split().ToList<string>();
JOIN
с при проведении DELETE
запрос . Ерунда, это делает, хотя синтаксис является странным. DELETE FROM ... USING ...
. См. руководство. Однако это doesn' t поддержка, лево-присоединяющаяся против таблицы, которая будет удалена из, that' s верный.
– Craig Ringer
10 February 2014 в 00:29
Сделайте Вас, действительно нуждаются в List< T> или будет IList< T> делают? Поскольку строка [] уже реализует последнего... просто другая причина, почему это стоит запрограммировать к интерфейсам, где Вы можете. (Могло случиться так, что в этом случае Вы действительно не можете по общему признанию.)
Самый легкий метод, вероятно, был бы методом AddRange.
Dim Foo as String = "a,b,c,d,e"
Dim Boo as List(of String)
Boo.AddRange(Foo.Split(","c))
DELETE FROM ... USING ...
, но there' s в настоящее время никакой способ выразить left outer join
против удалить целевой таблицы AFAIK.
– Craig Ringer
10 February 2014 в 00:29
Вот то, как я делаю его..., так как разделение ищет массив символа, я вырезаю первое значение в своей строке.
var values = labels.Split(" "[0]).ToList<string>();