Microsoft.Zing.ZingDecompiler.VisitLiteral C# (CSharp) Méthode

VisitLiteral() public méthode

public VisitLiteral ( System.Compiler.Literal literal ) : System.Compiler.Expression
literal System.Compiler.Literal
Résultat System.Compiler.Expression
        public override Expression VisitLiteral(Literal literal)
        {
            // TODO: probably need special cases here for the various integer & real types.
            // Also need to investigate quoting behavior in string literals.
            if (literal.Value == null)
                Write("null");
            else if (literal.Value is string)
                Write("@\"{0}\"", literal.Value.ToString().Replace("\"", "\"\""));
            else if (literal.Value is bool)
                Write(((bool)literal.Value) ? "true" : "false");
            else if (literal.Value is char)
                Write("'\\x{0:X4}'", ((ushort)(char)literal.Value));
            else if (literal.Value is TypeNode)
                this.VisitTypeReference((TypeNode)literal.Value);
            else if (literal.Type == SystemTypes.UInt64)
                Write("{0}ul", literal.Value);
            else
                Write("{0}", literal.Value);

            return literal;
        }