Можно добавлять методы расширения к структурам, но есть важное предостережение. Методы обычных структурных методов принимают этот
как параметр ref
, но C # не позволяет определять методы расширений, которые делают это. Хотя методы struct, которые мутируют , этот
может быть несколько опасным (поскольку компилятор разрешает использование методов struct в структурах только для чтения, но передает этот
по значению), они могут также иногда полезно, если вы будете осторожны, чтобы убедиться, что они используются только в соответствующих контекстах.
Кстати, vb.net позволяет методам расширения принимать этот
в качестве ByRef
, будь то класс, структура или общий тип неизвестной категории. Это может быть полезно в некоторых случаях, когда интерфейсы могут быть реализованы структурами. Например, если вы пытаетесь вызвать переменную типа List & lt; string & gt; .Enumerator
метод расширения, который принимает этот параметр
типа IEnumerator & lt; string & gt;
или принимает по значению a этот параметр
общего ограничения, связанного с IEnumerator & lt; string & gt;
, и если метод пытается продвинуть счетчик, любое продвижение будет отменяется, когда метод возвращается. Тем не менее, метод расширения, который берет ограниченный общий по ссылке, (возможно, в vb.net), будет вести себя так, как должен.
Основываясь на обсуждении здесь , я решил использовать CDATA
для инкапсуляции моих URL-адресов следующим образом:
''' <remarks>
''' <![CDATA[
''' http://forums.esri.com/Thread.asp?c=93&f=992&t=194920#580036
''' http://forums.esri.com/Thread.asp?c=93&f=992&t=155005#452664
''' ]]>
''' </remarks>
Кажется, работает, чтобы позволить ссылкам работать правильно а также не отключать предупреждение Visual Studio.
Правильный синтаксис XML - &
, то есть
''' <remarks>
''' http://forums.esri.com/Thread.asp?c=93&f=992&t=194920#580036
''' http://forums.esri.com/Thread.asp?c=93&f=992&t=155005#452664
''' </remarks>