operators
Unary operators work on a single operand:
int y = x++;
Binary operators work on two operands:
int sum = x + y;
Ternary operators (?:) work on three operands.
Built-in Operators
nameof()
nameof() returns the name of a variable, type or member as a string constant:
nameof(numbers) //returns numbers
nameof(numbers.Count) //returns Count
sizeof()
sizeof() returns the number of bytes that an instance of a type uses in memory:
sizeof(obj)
typeof()
typeof() returns the System.Type instance of a type.
typeof(arg) // where arg is the name of a type or type parameter.
// arg cannot be dynamic or any nullable reference type.
typeof(List<string>) // returns System.Collection.Generic.List`1[System.String]
typeof(int) // returns System.Int32
default()
default() returns the default value of a type:
default(int) // returns 0
int number = default // sets number to 0
is Operator
Check if the runtime type of an expression is compatible with a given type. Also tests an expression result against a pattern.
Expression is Type
as Operator
Explicitly convert an expression to a given reference or nullable type.
Expression as Type
other operators
= assignment operator
. member access operator
() invocation operator
[] indexer access operator
lambda operator
Normal method definition:
public override string ToString()
{
return $"{firstName} {lastName}".Trim();
}
Lambda:
public override string ToString() => $"{firstName} {lastName}".Trim
noop
The noop keyword in C# is ; (a standalone semi-colon).
implementing operators
Use the operator keyword to define a static method for an operator to implement it:
public static Person operator *(Person p1, Person p2)
{
return Person.Procreate(p1, p2);
}
Person dad = new();
Person mom = new();
Person baby = mom * dad;
Note: For every operator you define, define a method as well. Give developers the option.