class_docstr: For `C# <http://msdn2.microsoft.com/en-us/vcsharp/default.aspx>`_
  source code.
  
  Additional options accepted:
  
  `unicodelevel`
    Determines which Unicode characters this lexer allows for identifiers.
    The possible values are:
  
    * ``none`` -- only the ASCII letters and numbers are allowed. This
      is the fastest selection.
    * ``basic`` -- all Unicode characters from the specification except
      category ``Lo`` are allowed.
    * ``full`` -- all Unicode characters as specified in the C# specs
      are allowed.  Note that this means a considerable slowdown since the
      ``Lo`` category has more than 40,000 characters in it!
  
    The default value is ``basic``.
  
    .. versionadded:: 0.8
code: def __init__(self, **options):
      level = get_choice_opt(
          options, "unicodelevel", list(self.tokens), "basic"
      )
      if level not in self._all_tokens:
          # compile the regexes now
          self._tokens = self.__class__.process_tokendef(level)
      else:
          self._tokens = self._all_tokens[level]
  
      RegexLexer.__init__(self, **options)
  
imports: import re
  from pygments.lexer import RegexLexer, DelegatingLexer, bygroups, include, using, this, default, words
  from pygments.token import Punctuation, Text, Comment, Operator, Keyword, Name, String, Number, Literal, Other
  from pygments.util import get_choice_opt, iteritems
  from pygments import unistring
  from pygments.lexers.html import XmlLexer
label_desc: Use image node_id 1 to create a new CSharpLexer object from inherited base classes: RegexLexer with example: obj = CSharpLexer()