Ich verwende VSTS 2008 + C# +. Net 3.0. Ich habe zwei Eingabezeichenfolgen, ich denke, sie sind unterschiedlich. Aber der folgende C# -Code denkt, dass sie identisch sind und System.Data.ConstraintException auslöst, da Spaltenname eindeutig ist, aber Wert existiert bereits. Irgendwelche Ideen was ist falsch?C# String-Duplizierungsproblem
Hier ist mein Code und meine Eingabezeichenfolgen,
Hex Ansicht meiner Eingabezeichenfolgen,
http://i30.tinypic.com/2anx2b.jpg
Notepad Blick auf meine Eingabe-Strings,
http://i30.tinypic.com/2q03hn4.jpg
Meine Code,
static void Main(string[] args)
{
string[] buf = new string[] { "2ch", "2ch" };
DataTable bulkInserTable = new DataTable("BulkTable");
DataColumn column = null;
DataRow row = null;
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Name";
column.ReadOnly = true;
column.Unique = true;
bulkInserTable.Columns.Add(column);
foreach (string item in buf)
{
row = bulkInserTable.NewRow();
row["Name"] = item;
bulkInserTable.Rows.Add(row);
}
}
EDIT 1:
Meine Verwirrung ist, warum C# Wörterbuch denkt, dass sie unterschiedlich sind, aber DataSet denkt, dass sie aus dem gleichen sind. Irgendeine Lösung, um das Verhalten konsistent zu machen? Hier ist mein Code zu beweisen, C# Dictionary denkt, dass sie unterschiedlich sind, ist das Return-Buf-Array von zwei Elementen.
Dictionary<string, bool> dic = new Dictionary<string, bool>();
foreach (string s in buf)
{
dic[s] = true;
}
buf = new List<string>(dic.Keys).ToArray(); // we got two strings here, other than one, which proves Dictionary thinks the two strings are different.
Die "normalen" und vollen/halben Breite Formen der lateinischen Zeichen werden in der Regel als gleichwertig betrachtet, wenn Sie mit Text zu tun haben. – Joey
Danke Johannes, ich möchte mehr darüber lernen, was genau lateinische Voll- und Halbseitenformen bedeutet, könntest du einige Lesungen empfehlen? – George2