Пространства имен.NET и операторы использования [дубликат]

Целое число i в диапазоне [0, n-1], i / n будет 0 навсегда. Таким образом, вы действительно указываете n перекрывающихся четырехугольников.

Решение простое, просто приведите i к float (float)i/n.

14
задан Community 23 May 2017 в 12:13
поделиться

2 ответа

Документы изоморфны, как показано в программе ниже. Я думаю, что если вы используете 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, он захочет, чтобы вы сохранили значения внутри пространства имен.

15
ответ дан 1 December 2019 в 12:39
поделиться

Putting the using statement inside the namespace block scopes it to that block. This affects a number of things.

  1. As @Steve Haigh mentioned, the using statement is only valid within the block, so if there were other namespace blocks, they wouldn't be affected.
  2. The namespace specified by the 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.
  3. Putting the 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 для более полного обсуждения. .

7
ответ дан 1 December 2019 в 12:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: