Путать с C # 'using'

Я видел некоторый код для работы с AD в этом вопросе stackoverflow

Я запутался по поводу оператора using. Я подумал, что он просто использовался для вещей, которые, как вы беспокоитесь, могли вызвать утечку памяти, например WebClient или что-то подобное ...

В любом случае:

using (var context = new PrincipalContext( ContextType.Domain )) 
 {
      using (var user = UserPrincipal.FindByIdentity( context, "username" ))
      {
          var groups = user.GetAuthorizationGroups();
          ...
      }
 }

когда я дойду до строки var groups = user.GetAuthorizationGroups ( ) - пользователь имеет значение NULL, поэтому строка не выполняется с помощью NullReference. Когда я наводю указатель мыши на отладку, он показывает null, затем показывает статические члены и все значения.

Если я уберу строку из оператора using и оставлю только var user = UserPrincipal.FindByIdentity (context, "username") user заполняется по мере необходимости.

Так что происходит ???

Редактировать: Я набросился и отправил поддельное имя пользователя. Как ни странно, когда я проверяю переменные во время отладки, когда вы ожидаете, что пользователь будет полностью нулевым, если я отправлю фиктивный идентификатор пользователя, но он показал под пользователем: null, статические члены, и были значения для того, что я в настоящее время вошел в систему как - поэтому я подумал, что это потенциально связано с оператором using. Ура!

5
задан Community 23 May 2017 в 11:58
поделиться