description

# Symbol constructor

const Symbol(

1. String name

)

Constructs a new Symbol representing the provided name.

Symbols created from equal `name` strings are themselves equal. If the symbols are created using `const`, symbols with the same `name` strings are canonicalized and identical.

Some `name` strings create symbols which can also be created using a symbol literal, or be implicitly created while running Dart programs, for example through Object.noSuchMethod.

If `name` is a single Dart identifier that does not start with an underscore, or it is a qualified identifier (multiple identifiers separated by `.`s), or it is the name of a user definable operator different from `unary-` (one of "`+`", "`-`", "`*`", "`/`", "`%`", "`~/`", "`&`", "`|`", "`^`", "`~`", "`<<`", "`>>`", "`>>>`", "`<`", "`<=`", "`>`", "`>=`", "`==`", "`[]`", or "`[]=`"), then the result of `Symbol(name)` is equal to the symbol literal created by prefixing `#` to the contents of `name`, and `const Symbol(name)` is identical to that symbol literal. That is `#foo == Symbol("foo")` and `identical(#foo, const Symbol("foo"))`.

If `name` is a single identifier that does not start with an underscore followed by a `=`, then the symbol is a setter name, and can be equal to the Invocation.memberName in an Object.noSuchMethod invocation.

Private symbol literals, like `#_foo`, cannot be created using the symbol constructor. A symbol like `const Symbol("_foo")` is not equal to any symbol literal, or to any source name symbol introduced by `noSuchMethod`.

    assert(Symbol("foo") == Symbol("foo"));
    assert(Symbol("foo") == #foo);
    assert(identical(const Symbol("foo"), const Symbol("foo")));
    assert(identical(const Symbol("foo"), #foo));
    assert(Symbol("[]=") == #[]=);
    assert(identical(const Symbol("[]="), #[]=));
    assert(Symbol("foo.bar") == #foo.bar);
    assert(identical(const Symbol("foo.bar"), #foo.bar));

The created instance overrides Object.==.

## Implementation

    const factory Symbol(String name) = internal.Symbol;