Целое число i в диапазоне [0, n-1], i / n будет 0 навсегда. Таким образом, вы действительно указываете n перекрывающихся четырехугольников.
Решение простое, просто приведите i к float (float)i/n
.
Документы изоморфны, как показано в программе ниже. Я думаю, что если вы используете XmlDiffOptions.IgnoreNamespaces
и XmlDiffOptions.IgnorePrefixes
для настройки Microsoft.XmlDiffPatch.XmlDiff
, вы получите желаемый результат.
using System.Linq;
using System.Xml.Linq;
namespace SO_794331
{
class Program
{
static void Main(string[] args)
{
var docA = XDocument.Parse(
@"<root xmlns:ns=""http://myNs""><ns:child>1</ns:child></root>");
var docB = XDocument.Parse(
@"<root><child xmlns=""http://myNs"">1</child></root>");
var rootNameA = docA.Root.Name;
var rootNameB = docB.Root.Name;
var equalRootNames = rootNameB.Equals(rootNameA);
var descendantsA = docA.Root.Descendants();
var descendantsB = docB.Root.Descendants();
for (int i = 0; i < descendantsA.Count(); i++)
{
var descendantA = descendantsA.ElementAt(i);
var descendantB = descendantsB.ElementAt(i);
var equalChildNames = descendantA.Name.Equals(descendantB.Name);
var valueA = descendantA.Value;
var valueB = descendantB.Value;
var equalValues = valueA.Equals(valueB);
}
}
}
}
-1 --- 2712042- Первый из них имеет y в области видимости только для пространства имен x, второй имеет y в области видимости для всего файла, поэтому возможно наличие других пространств имен. Если вы сохраняете одно пространство имен на файл (я предполагаю, что это было условием), то обычно обычно не отличается (но см. Комментарий Марка о столкновениях, если разные типы имеют одно и то же имя в разных пространствах имен]. Если вы используете StyleCop, он захочет, чтобы вы сохранили значения внутри пространства имен.
Putting the using
statement inside the namespace
block scopes it to that block. This affects a number of things.
using
statement is only valid within the block, so if there were other namespace
blocks, they wouldn't be affected.using
can be shortened based on the outer namespace
block. So using x.y;
outside of the namespace can just be expressed as using y;
inside of the namespace x
block.using
inside of the namespace causes the compiler to guarantee that the specified namespace isn't overwritten. For example:
используя Guid = System.Guid;
Образец пространства имен
{
открытый класс Guid {}
Программа общественного класса
{
общедоступная статическая пустота Main ()
{
Console.WriteLine (новый Guid ());
}
}
}
Приведенный выше код скомпилируется, но неясно, какой экземпляр Guid
создается. Однако если оператор с использованием
находится внутри блока namespace
, выдается ошибка компилятора. См. соответствующую документацию StyleCop для более полного обсуждения. .