J'utilise VSTS 2008 + C# + .Net 3.0. J'ai deux cordes d'entrée, je pense qu'ils sont différents. Mais le code C# suivant pense qu'ils sont identiques et renvoie System.Data.ConstraintException, indique que le nom de colonne est contraint à être unique, mais que la valeur existe déjà. Des idées ce qui ne va pas?Problème de duplication de chaîne C#
Voici mon code et mes cordes d'entrée,
vue Hex de mes cordes d'entrée,
http://i30.tinypic.com/2anx2b.jpg
vue Bloc-notes de mes chaînes d'entrée,
http://i30.tinypic.com/2q03hn4.jpg
Mon 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:
Ma confusion est, pourquoi C# Dictionnaire pense qu'ils sont différents, mais DataSet pense qu'ils sont de même. Toute solution pour rendre le comportement cohérent? Voici mon code pour prouver que C# Dictionary pense qu'ils sont différents, le tableau buf de retour est de deux éléments.
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.
Les formes "normales" et pleine/demi-largeur des caractères latins sont généralement considérées comme équivalentes si vous traitez du texte. – Joey
Merci Johannes, je veux en savoir plus sur ce que signifie exactement les formes de latin et de demi-largeur, pourriez-vous recommander quelques lectures? – George2