J'ai un problème pour déboguer mon code C# dans Visual Studio 2015.
Je souhaite ajouter une simple expression à un point d'arrêt,
J'ai donc ajouté hierarchyRelation != null
en l'état. Il s'agit d'une variable locale de la méthode que je débogue, et elle existe.
Cependant, lors de l'exécution, j'obtiens l'erreur suivante
"La condition d'un point d'arrêt n'a pas été exécutée. La condition était "hierarchyRelation != null". L'erreur renvoyée était "Le point d'arrêt doit évaluer une opération booléenne". Cliquez sur OK pour vous arrêter à ce point d'arrêt. ce point d'arrêt.
En fait, la condition était plus complexe, mais c'est le cas le plus simple qui reproduit le problème. J'ai essayé des variantes, et même de comparer les propriétés de cette variable, et le résultat est toujours le même.
Si j'essaie une condition constante, comme 1 != 2
o 1 = 1
cela fonctionne bien. Y a-t-il un problème ? La question la plus proche que j'ai trouvée est la suivante cette mais c'était en vb code
. Sa solution a été d'ajouter une méthode de débogage directement dans le code. Bien que je puisse le faire, je voudrais savoir pourquoi cela ne fonctionne pas.
Le code de la méthode
private HierarchyNodeDto GetNodeTreeThatContainsText<TRollup, TLeaf, THierarchyRelation>(HierarchyNodeDto root, string text, PreFilter preFilter, Func<TLeaf, bool> leafContainsTextFunc, bool parentContainsText) where TRollup: HierarchyNodeDto where TLeaf: HierarchyNodeDto {
dynamic rootNode = root as TRollup;
if (rootNode != null) {
if (rootNode.Nodes == null) {
return null;
}
var childNodesWithText = new List<THierarchyRelation>();
foreach (var hierarchyRelation in rootNode.Nodes) {
var isLeaf = hierarchyRelation.Node.GetType() == typeof(TransactionTypeHierarchyLeafDto) || hierarchyRelation.Node.GetType() == typeof(AccountHierarchyLeafDto);
if (!isLeaf && hierarchyRelation.Node.Name != null && hierarchyRelation.Node.Name.ToLower().Contains(text) && preFilter != PreFilter.Leafs) {
childNodesWithText.Add(hierarchyRelation);
continue;
}
var subtreeThatContainsText = this.GetNodeTreeThatContainsText<TRollup, TLeaf, THierarchyRelation>(hierarchyRelation.Node, text, preFilter, leafContainsTextFunc, rootNode.Name.ToLower().Contains(text));
if (subtreeThatContainsText == null) {
continue;
}
hierarchyRelation.Node = subtreeThatContainsText;
childNodesWithText.Add(hierarchyRelation);
}
rootNode.Nodes = childNodesWithText;
if (rootNode.Nodes.Count > 0 || (rootNode.Name.ToLower().Contains(text) && preFilter != PreFilter.Leafs)) {
return rootNode;
}
return null;
}
var rootLeaf = root as TLeaf;
return rootLeaf != null && ((leafContainsTextFunc.Invoke(rootLeaf) && preFilter != PreFilter.Nodes) || (parentContainsText && preFilter != PreFilter.Leafs)) ? rootLeaf : null;
}
J'ajoute le point d'arrêt dans la première ligne à l'intérieur de la section foreach