Csharp/CSharp Tutorial/Data Type/Data Type
Содержание
- 1 bool: False/True string
- 2 Converting Numeric Strings to Their Internal Representation
- 3 Convert numeric types explicit to "smaller" types
- 4 C#"s Value Types
- 5 CTS Types and Aliases
- 6 Data Declarations
- 7 Data type default value
- 8 Data type Functionality
- 9 Default Value Comparison
- 10 Default values for primitive types
- 11 Explicit numeric conversions
- 12 Literals
- 13 Parsing strings to create data types
- 14 Parsing strings to create data types: char
- 15 Parsing strings to create data types: int
- 16 Primitives in C#
- 17 Specifying Literal Values
- 18 System.Int32 value
- 19 System Types and C# Shorthand
- 20 System.UInt16 value
- 21 The C# Value Types
- 22 The differences between int and double.
- 23 UInt16.MaxValue/MinValue
- 24 ulong: Max/Min value
- 25 Using new to create intrinsic data types
bool: False/True string
using System;
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("bool.FalseString: {0}",bool.FalseString);
Console.WriteLine("bool.TrueString: {0}",bool.TrueString);
}
}
bool.FalseString: False bool.TrueString: True
Converting Numeric Strings to Their Internal Representation
For the numeric types, the .NET structure names and their C# keyword equivalents are shown here:
.NET Structure Name C# Name Decimal decimal Double double Single float Int16 short Int32 int Int64 long UInt16 ushort UInt32 uint UInt64 ulong Byte byte Sbyte sbyte
- The structures are defined inside the System namespace.
- The fully qualified name for Int32 is System.Int32.
Convert numeric types explicit to "smaller" types
class MainClass
{
public static void Main()
{
// all implicit
sbyte v = 55;
short v2 = v;
int v3 = v2;
long v4 = v3;
// explicit to "smaller" types
v3 = (int) v4;
v2 = (short) v3;
v = (sbyte) v2;
}
}
C#"s Value Types
C# contains two general categories of built-in data types:
- value types
- reference types.
C#"s reference types are defined by classes.
2.1.Data Type 2.1.1. C#"s Value Types 2.1.2. <A href="/Tutorial/CSharp/0040__Data-Type/TheCValueTypes.htm">The C# Value Types </a> 2.1.3. <A href="/Tutorial/CSharp/0040__Data-Type/ConvertingNumericStringstoTheirInternalRepresentation.htm">Converting Numeric Strings to Their Internal Representation</a> 2.1.4. <A href="/Tutorial/CSharp/0040__Data-Type/Literals.htm">Literals</a> 2.1.5. <A href="/Tutorial/CSharp/0040__Data-Type/PrimitivesinC.htm">Primitives in C#</a> 2.1.6. <A href="/Tutorial/CSharp/0040__Data-Type/SystemTypesandCShorthand.htm">System Types and C# Shorthand</a> 2.1.7. <A href="/Tutorial/CSharp/0040__Data-Type/Datatypedefaultvalue.htm">Data type default value</a> 2.1.8. <A href="/Tutorial/CSharp/0040__Data-Type/Thedifferencesbetweenintanddouble.htm">The differences between int and double.</a> 2.1.9. <A href="/Tutorial/CSharp/0040__Data-Type/Explicitnumericconversions.htm">Explicit numeric conversions</a> 2.1.10. <A href="/Tutorial/CSharp/0040__Data-Type/Convertnumerictypesexplicittosmallertypes.htm">Convert numeric types explicit to "smaller" types</a> 2.1.11. <A href="/Tutorial/CSharp/0040__Data-Type/SystemInt32value.htm">System.Int32 value</a> 2.1.12. <A href="/Tutorial/CSharp/0040__Data-Type/UInt16MaxValueMinValue.htm">UInt16.MaxValue/MinValue</a> 2.1.13. <A href="/Tutorial/CSharp/0040__Data-Type/SystemUInt16value.htm">System.UInt16 value</a> 2.1.14. <A href="/Tutorial/CSharp/0040__Data-Type/boolFalseTruestring.htm">bool: False/True string</a> 2.1.15. <A href="/Tutorial/CSharp/0040__Data-Type/ulongMaxMinvalue.htm">ulong: Max/Min value</a> 2.1.16. <A href="/Tutorial/CSharp/0040__Data-Type/Parsingstringstocreatedatatypes.htm">Parsing strings to create data types</a> 2.1.17. <A href="/Tutorial/CSharp/0040__Data-Type/Parsingstringstocreatedatatypesint.htm">Parsing strings to create data types: int</a> 2.1.18. <A href="/Tutorial/CSharp/0040__Data-Type/Parsingstringstocreatedatatypeschar.htm">Parsing strings to create data types: char</a> 2.1.19. <A href="/Tutorial/CSharp/0040__Data-Type/CTSTypesandAliases.htm">CTS Types and Aliases</a> 2.1.20. <A href="/Tutorial/CSharp/0040__Data-Type/SpecifyingLiteralValues.htm">Specifying Literal Values</a> 2.1.21. <A href="/Tutorial/CSharp/0040__Data-Type/DatatypeFunctionality.htm">Data type Functionality</a> 2.1.22. <A href="/Tutorial/CSharp/0040__Data-Type/Defaultvaluesforprimitivetypes.htm">Default values for primitive types</a> 2.1.23. <A href="/Tutorial/CSharp/0040__Data-Type/DataDeclarations.htm">Data Declarations</a> 2.1.24. <A href="/Tutorial/CSharp/0040__Data-Type/Usingnewtocreateintrinsicdatatypes.htm">Using new to create intrinsic data types</a> 2.1.25. <A href="/Tutorial/CSharp/0040__Data-Type/DefaultValueComparison.htm">Default Value Comparison</a>
CTS Types and Aliases
CTS Type Name C# Alias Description
System.Object Object Base class for all CTS types
System.String String String
System.Sbyte Sbyte Signed 8-bit byte
System.Byte Byte Unsigned 8-bit byte
System.Int16 Short Signed 16-bit value
System.UInt16 Ushort Unsigned 16-bit value
System.Int32 Int Signed 32-bit value
System.UInt32 Uint Unsigned 32-bit value
System.Int64 Long Signed 64-bit value
System.UInt64 Ulong Unsigned 64-bit value
System.Char Char 16-bit Unicode character
System.Single Float IEEE 32-bit float
System.Double Double IEEE 64-bit float
System.Boolean Bool Boolean value (true/false)
System.Decimal Decimal 128-bit data type
Data Declarations
using System;
using System.Collections.Generic;
using System.Text;
class Program
{
static void Main(string[] args)
{
// Local variables are declared and initialized as so:
// dataType varName = initialValue;
int myInt = 0;
string myString;
myString = "This is my character data";
// Declare 3 bools on a single line.
bool b1 = true, b2 = false, b3 = b1;
System.Boolean b4 = false;
System.Console.WriteLine("Your data: {0}, {1}, {2}, {3}, {4}, {5}",
myInt, myString, b1, b2, b3, b4);
}
}
Data type default value
using System;
class MainClass
{
public sbyte theSignedByte;
public byte theByte;
public short theShort;
public ushort theUShort;
public int theInt;
public uint theUInt;
public long theLong;
public ulong theULong;
public char theChar;
public float theFloat;
public double theDouble;
public bool theBool;
public decimal theDecimal;
public string theStr;
public object theObj;
public static int Main(string[] args)
{
MainClass v = new MainClass();
Console.WriteLine("bool: {0}", v.theBool);
Console.WriteLine("byte: {0}", v.theByte);
Console.WriteLine("char: {0}", v.theChar);
Console.WriteLine("decimal: {0}", v.theDecimal);
Console.WriteLine("double: {0}", v.theDouble);
Console.WriteLine("float: {0}", v.theFloat);
Console.WriteLine("int: {0}", v.theInt);
Console.WriteLine("long: {0}", v.theLong);
Console.WriteLine("object: {0}", v.theObj);
Console.WriteLine("short: {0}", v.theShort);
Console.WriteLine("signed byte: {0}", v.theSignedByte);
Console.WriteLine("string: {0}", v.theStr);
Console.WriteLine("unsigned int: {0}", v.theUInt);
Console.WriteLine("unsigned long: {0}", v.theULong);
Console.WriteLine("unsigned short: {0}", v.theUShort);
return 0;
}
}
bool: False byte: 0 char: decimal: 0 double: 0 float: 0 int: 0 long: 0 object: short: 0 signed byte: 0 string: unsigned int: 0 unsigned long: 0 unsigned short: 0
Data type Functionality
using System;
using System.Collections.Generic;
using System.Text;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Max of int: {0}", int.MaxValue);
Console.WriteLine("Min of int: {0}", int.MinValue);
Console.WriteLine("Max of double: {0}", double.MaxValue);
Console.WriteLine("Min of double: {0}", double.MinValue);
Console.WriteLine("double.Epsilon: {0}", double.Epsilon);
Console.WriteLine("double.PositiveInfinity: {0}",double.PositiveInfinity);
Console.WriteLine("double.NegativeInfinity: {0}",double.NegativeInfinity);
Console.WriteLine("bool.FalseString: {0}", bool.FalseString);
Console.WriteLine("bool.TrueString: {0}", bool.TrueString);
}
}
Default Value Comparison
using System;
using System.ruponentModel;
class DefaultValueComparison
{
static int CompareToDefault<T>(T value)
where T : IComparable<T>
{
return value.rupareTo(default(T));
}
static void Main()
{
Console.WriteLine(CompareToDefault("x"));
Console.WriteLine(CompareToDefault(10));
Console.WriteLine(CompareToDefault(0));
Console.WriteLine(CompareToDefault(-10));
Console.WriteLine(CompareToDefault(DateTime.MinValue));
}
}
Default values for primitive types
Type Default value
Reference null
Numeric type or Enum type 0
char type "\0"
bool type false
Explicit numeric conversions
using System;
class MainClass
{
public static void Main()
{
uint value1 = 312;
byte value2 = (byte) value1;
Console.WriteLine("Value2: {0}", value2);
}
}
Value2: 56
Literals
literals refer to fixed values that are represented in their human-readable form.
- To specify a long literal, append an l or an L. For example, 12 is an int, but 12L is a long.
- To specify an unsigned integer value, append a u or U. Thus, 100 is an int, but 100U is a uint.
- To specify an unsigned, long integer, use ul or UL. For example, 984375UL is of type ulong.
- To specify a float literal, append an F or f to the constant. For example, 10.19F is of type float.
- To specify a decimal literal, follow its value with an m or M. For example, 9.95M is a decimal literal.
- A hexadecimal literal must begin with 0x (a zero followed by an x).
2.1.Data Type 2.1.1. <A href="/Tutorial/CSharp/0040__Data-Type/CsValueTypes.htm">C#"s Value Types</a> 2.1.2. <A href="/Tutorial/CSharp/0040__Data-Type/TheCValueTypes.htm">The C# Value Types </a> 2.1.3. <A href="/Tutorial/CSharp/0040__Data-Type/ConvertingNumericStringstoTheirInternalRepresentation.htm">Converting Numeric Strings to Their Internal Representation</a> 2.1.4. Literals 2.1.5. <A href="/Tutorial/CSharp/0040__Data-Type/PrimitivesinC.htm">Primitives in C#</a> 2.1.6. <A href="/Tutorial/CSharp/0040__Data-Type/SystemTypesandCShorthand.htm">System Types and C# Shorthand</a> 2.1.7. <A href="/Tutorial/CSharp/0040__Data-Type/Datatypedefaultvalue.htm">Data type default value</a> 2.1.8. <A href="/Tutorial/CSharp/0040__Data-Type/Thedifferencesbetweenintanddouble.htm">The differences between int and double.</a> 2.1.9. <A href="/Tutorial/CSharp/0040__Data-Type/Explicitnumericconversions.htm">Explicit numeric conversions</a> 2.1.10. <A href="/Tutorial/CSharp/0040__Data-Type/Convertnumerictypesexplicittosmallertypes.htm">Convert numeric types explicit to "smaller" types</a> 2.1.11. <A href="/Tutorial/CSharp/0040__Data-Type/SystemInt32value.htm">System.Int32 value</a> 2.1.12. <A href="/Tutorial/CSharp/0040__Data-Type/UInt16MaxValueMinValue.htm">UInt16.MaxValue/MinValue</a> 2.1.13. <A href="/Tutorial/CSharp/0040__Data-Type/SystemUInt16value.htm">System.UInt16 value</a> 2.1.14. <A href="/Tutorial/CSharp/0040__Data-Type/boolFalseTruestring.htm">bool: False/True string</a> 2.1.15. <A href="/Tutorial/CSharp/0040__Data-Type/ulongMaxMinvalue.htm">ulong: Max/Min value</a> 2.1.16. <A href="/Tutorial/CSharp/0040__Data-Type/Parsingstringstocreatedatatypes.htm">Parsing strings to create data types</a> 2.1.17. <A href="/Tutorial/CSharp/0040__Data-Type/Parsingstringstocreatedatatypesint.htm">Parsing strings to create data types: int</a> 2.1.18. <A href="/Tutorial/CSharp/0040__Data-Type/Parsingstringstocreatedatatypeschar.htm">Parsing strings to create data types: char</a> 2.1.19. <A href="/Tutorial/CSharp/0040__Data-Type/CTSTypesandAliases.htm">CTS Types and Aliases</a> 2.1.20. <A href="/Tutorial/CSharp/0040__Data-Type/SpecifyingLiteralValues.htm">Specifying Literal Values</a> 2.1.21. <A href="/Tutorial/CSharp/0040__Data-Type/DatatypeFunctionality.htm">Data type Functionality</a> 2.1.22. <A href="/Tutorial/CSharp/0040__Data-Type/Defaultvaluesforprimitivetypes.htm">Default values for primitive types</a> 2.1.23. <A href="/Tutorial/CSharp/0040__Data-Type/DataDeclarations.htm">Data Declarations</a> 2.1.24. <A href="/Tutorial/CSharp/0040__Data-Type/Usingnewtocreateintrinsicdatatypes.htm">Using new to create intrinsic data types</a> 2.1.25. <A href="/Tutorial/CSharp/0040__Data-Type/DefaultValueComparison.htm">Default Value Comparison</a>
Parsing strings to create data types
Structure Conversion Method Decimal static decimal Parse(string str) Double static double Parse(string str) Single static float Parse(string str) Int64 static long Parse(string str) Int32 static int Parse(string str) Int16 static short Parse(string str) UInt64 static ulong Parse(string str) UInt32 static uint Parse(string str) UInt16 static ushort Parse(string str) Byte static byte Parse(string str) SByte static sbyte Parse(string str)
using System;
class MainClass
{
public static void Main(string[] args)
{
bool myBool = bool.Parse("True");
Console.WriteLine("-> Value of myBool: {0}", myBool);
}
}
Parsing strings to create data types: char
using System;
class MainClass
{
public static void Main(string[] args)
{
char myChar = char.Parse("w");
Console.WriteLine("-> Value of myChar: {0}\n", myChar);
}
}
-> Value of myChar: w
Parsing strings to create data types: int
using System;
class MainClass
{
public static void Main(string[] args)
{
int myInt = int.Parse("8");
Console.WriteLine("-> Value of myInt: {0}", myInt);
}
}
-> Value of myInt: 8
Primitives in C#
Type Primitive Description Range
bool System.Boolean Boolean true or false
byte System.Byte 8-bit integer 0 to 255
char System.Char 16-bit Unicode character /u0000 to /uffff
decimal System.Decimal 128-bit decimal (+/-)1.0 � 10^-28 to (+/-)7.9 � 10^28, with 28 to 29 digits of precision
double System.Double 64-bit floating point -1.79769313486232e308 to 1.79769313486232e308
float System.Single 32-bit floating point (+/-)1.5 � 10^-45 to (+/-)3.4 � 10^38, with 7 digits of precision
int System.Int32 32-bit unsigned integer -2,147,483,648 to 2,147,483,647
long System.Int64 64-bit integer -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
sbyte System.SByte 8-bit integer -128 to 127
short System.Int16 16-bit integer -32,768 to 32,767
string System.String not applicable String is an immutable variable length string.
uint System.UInt32 32-bit unsigned integer 0 to 4,294,967,295
ulong System.UInt64 64-bit unsigned integer 0 to 18,446,744,073,709,551,615
ushort System.UInt16 16-bit unsigned integer 0 to 65,535
Specifying Literal Values
class MainClass
{
static void Main()
{
System.Console.WriteLine(42);
System.Console.WriteLine(1.618034);
}
}
System.Int32 value
using System;
class MainClass
{
public static void Main(string[] args)
{
System.Int32 intA = 1001;
System.Int32 intB = 1000;
if(intA == intB)
Console.WriteLine("Same value!\n");
else
Console.WriteLine("Not the same value!\n");
}
}
Not the same value!
System Types and C# Shorthand
C# Shorthand CLS Compliant? System Type Range Meaning in Life
sbyte No System.SByte 128 to 127 Signed 8-bit number
byte Yes System.Byte 0 to 255 Unsigned 8-bit number
short Yes System.Int16 32,768 to 32,767 Signed 16-bit number
ushort No System.UInt16 0 to 65,535 Unsigned 16-bit number
int Yes System.Int32 2,147,483,648 to 2,147,483,647 Signed 32-bit number
uint No System.UInt32 0 to 4,294,967,295 Unsigned 32-bit number
long Yes System.Int64 9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 Signed 64-bit number
ulong No System.UInt64 0 to 18,446,744,073,709,551,615 Unsigned 64-bit number
char Yes System.Char U0000 to Uffff A single 16-bit Unicode character
float Yes System.Single 1.5 * 10^-45 to 3.4 * 10^38 32-bit floating point number
double Yes System.Double 5.0 * 10^-324 to 1.7 * 10^308 64-bit floating point number
bool Yes System.Boolean true or false Represents truth or falsity
decimal Yes System.Decimal 10^0 to 10^28 A 96-bit signed number
string Yes System.String Limited by system memory Represents a set of Unicode characters
object Yes System.Object Any type can be stored in an object variable The base class of all types in the .NET universe
System.UInt16 value
using System;
class MainClass
{
public static void Main(string[] args)
{
System.UInt16 myUInt16 = 30000;
Console.WriteLine("Your value is: {0}", myUInt16.ToString());
Console.WriteLine("I am a: {0}", myUInt16.GetType().ToString());
}
}
Your value is: 30000 I am a: System.UInt16
The C# Value Types
Type Meaning bool Represents true/false values byte 8-bit unsigned integer char Character decimal Numeric type for financial calculations double Double-precision floating point float Single-precision floating point int Integer long Long integer sbyte 8-bit signed integer short Short integer uint An unsigned integer ulong An unsigned long integer ushort An unsigned short integer
The differences between int and double.
using System;
class MainClass {
public static void Main() {
int ivar; // an int variable
double dvar; // a floating-point variable
ivar = 100; // assign ivar the value 100
dvar = 100.0; // assign dvar the value 100.0
Console.WriteLine("Original value of ivar: " + ivar);
Console.WriteLine("Original value of dvar: " + dvar);
Console.WriteLine(); // print a blank line
// now, divide both by 3
ivar = ivar / 3;
dvar = dvar / 3.0;
Console.WriteLine("ivar after division: " + ivar);
Console.WriteLine("dvar after division: " + dvar);
}
}
Original value of ivar: 100 Original value of dvar: 100 ivar after division: 33 dvar after division: 33.3333333333333
UInt16.MaxValue/MinValue
using System;
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("Max for an UInt16 is: {0}", UInt16.MaxValue);
Console.WriteLine("Min for an UInt16 is: {0}", UInt16.MinValue);
}
}
Max for an UInt16 is: 65535 Min for an UInt16 is: 0
ulong: Max/Min value
using System;
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("-> ulong.MaxValue: {0}",ulong.MaxValue);
Console.WriteLine("-> ulong.MinValue: {0}\n",ulong.MinValue);
}
}
-> ulong.MaxValue: 18446744073709551615 -> ulong.MinValue: 0
Using new to create intrinsic data types
using System;
using System.Collections.Generic;
using System.Text;
class Program
{
static void Main(string[] args)
{
bool b = new bool(); // set to false.
int i = new int(); // set to 0.
double d = new double(); // set to 0.0.
DateTime dt = new DateTime(); // set to 1/1/0001 12:00:00 AM
Console.WriteLine("{0}, {1}, {2}, {3}",b, i, d, dt);
}
}