Skip to content

C# | Literals

uint literals are defined by using the suffix U or u, or by using an integral values within the range of uint:

uint ui = 5U;

int literals are defined by simply using integral values within the range of int:

int i = 5;

sbyte type has no literal suffix. Integer literals are implicitly converted from int:

sbyte sb = 127;

decimal literals are defined by using the suffix M or m on a real number:

decimal m = 30.5M;

double literals are defined by using the suffix D or d, or by using a real number:

double d = 30.5D;

float literals are defined by using the suffix F or f, or by using a real number:

float f = 30.5F;

long literals are defined by using the suffix L or l, or by using an integral values within the range of long:

long l = 5L;

ulong literals are defined by using the suffix UL, ul, Ul, uL, LU, lu, Lu, or lU, or by using an integral values within the range of ulong:

ulong ul = 5UL;

string literals are defined by wrapping the value with double-quotes ":

string s = "hello, this is a string literal";

String literals may contain escape sequences. See String Escape Sequences

Additionally, C# supports verbatim string literals (See Verbatim Strings). These are defined by wrapping the value with double-quotes ", and prepending it with @. Escape sequences are ignored in verbatim string literals, and all whitespace characters are included:

string s = @"The path is:
C:\Windows\System32";
//The backslashes and newline are included in the string

char literals are defined by wrapping the value with single-quotes ':

char c = 'h';

Character literals may contain escape sequences. See String Escape Sequences

A character literal must be exactly one character long (after all escape sequences have been evaluated). Empty character literals are not valid. The default character (returned by default(char) or new char()) is '\0', or the NULL character (not to be confused with the null literal and null references).

byte type has no literal suffix. Integer literals are implicitly converted from int:

byte b = 127;

short type has no literal. Integer literals are implicitly converted from int:

short s = 127;

ushort type has no literal suffix. Integer literals are implicitly converted from int:

ushort us = 127;

bool literals are either true or false;

bool b = true;
  • bool: true or false
  • byte: None, integer literal implicitly converted from int
  • sbyte: None, integer literal implicitly converted from int
  • char: Wrap the value with single-quotes
  • decimal: M or m
  • double: D, d, or a real number
  • float: F or f
  • int: None, default for integral values within the range of int
  • uint: U, u, or integral values within the range of uint
  • long: L, l, or integral values within the range of long
  • ulong: UL, ul, Ul, uL, LU, lu, Lu, lU, or integral values within the range of ulong
  • short: None, integer literal implicitly converted from int
  • ushort: None, integer literal implicitly converted from int
  • string: Wrap the value with double-quotes, optionally prepended with @
  • null: The literal null