1.5. C# data type

发布时间 : 2025-10-25 13:34:41 UTC      

Page Views: 10 views

In C#, variables are divided into the following types:

  • Value type

  • Reference type

  • Pointer type

1.5.1. Value type #

A value type variable can be assigned directly to a value. They are derived from the class System.ValueType .

The value type contains data directly, such as int char float that store numbers, characters, and floating-point numbers, respectively when you declare a int type, the system allocates memory to store values.

The following table lists the value types available in C# 2010:

Value Type #

Types

Description

Range

Default value

Bool

Boolean value

True or False

FALSE

Byte

8-bit unsigned integer

0 to 255

0

Char

16-bit Unicode character

U + 0000 to U + ffff

‘0’

Decimal

128-bit exact decimal value, 28-29 significant digits

(- 7.9 x 1028 to 1028) / 100 to 28

0.0M

Double

64-bit double precision floating point type

(+ / -) 5.0x 10-324 to (+ / -) 1.7x 10308

0.0D

Float

32-bit single precision floating point type

-3.4x 1038 to + 3.4x 1038

0.0F

Int

32-bit signed integer type

-2147483648 to 2147483647

0

Long

64-bit signed integer type

-9223372036854775808 to 9223372036854775807

0L

Sbyte

8-bit signed integer type

-128 to 127

0

Short

16-bit signed integer type

-32768 to 32767

0

Uint

32-bit unsigned integer type

0 to 4294967295

0

Ulong

64-bit unsigned integer type

0 to 18446744073709551615

0

Ushort

16-bit unsigned integer type

0 to 65535

0

To get the exact size of a type or variable on a particular platform, you can use the sizeof method. Expression of sizeof(type) produces a storage size of an object or type stored in bytes. The following example is used to get any machine int storage size of the type:

Example #

using System; namespace DataTypeApplication { class Program { static void Main(string[] args) { Console.WriteLine("Size of int: {0}", sizeof(int)); Console.ReadLine(); } } } 

When the above code is compiled and executed, it produces the following results:

Size of int: 4 

1.5.2. Reference type #

Reference types do not contain the actual data stored in the variable, but they do contain references to the variable.

In other words, they refer to a memory location. When using multiple variables, the reference type can point to a memory location. If the data in the memory location is changed by one variable, other variables will automatically reflect this change in value. The built-in reference types are: object dynamic and string .

1.5.3. Object type #

The Object type is the ultimate base class for all data types in the C# common type system (CTS). Object is System.Object alias for the class. So object types can be assigned values of any other type (value type, reference type, predefined type, or user-defined type). However, you need todo a type conversion before assigning a value.

When a value type is converted to an object type, it is called boxing; on the other hand, when an object type is converted to a value type, it is called unboxing.

object obj; obj = 100; // This is packing 

1.5.4. Dynamic type #

You can store values of any type in dynamic data type variables. The type checking of these variables occurs at run time.

The syntax for declaring dynamic types:

dynamic <variable_name> = value; 

For example:

dynamic d = 20; 

Dynamic types are similar to object types, but type checking for object type variables occurs at compile time, while type checking for dynamic type variables occurs at run time.

1.5.5. String type #

String type allows you to assign any string value to a variable. The string type is an alias for the System.String class. It is derived from the Object type. Values of type String can be assigned in two forms: quotation marks and @ quotation marks.

For example:

String str = "runoob.com"; 

An @ quotation mark string:

@"runoob.com"; 

The C# string string can be preceded by @ (called “verbatim string”) to treat the escape character () as a normal character, such as:

string str = @"C:\Windows"; 

Equivalent to:

string str = "C:\\Windows"; 

@ can wrap any line in a string, and newline characters and indented spaces are counted within the length of the string.

string str = @""; 

User-defined reference types are: class interface or delegate . We will discuss these types in later chapters.

1.5.6. Pointer type #

Pointer type variables store another type of memory address. Pointers in C# have the same function as pointers in C or C++.

Syntax for declaring pointer types:

type* identifier; 

For example:

char* cptr; int* iptr; 

We will discuss pointer types in the section “unsafe Code”.

《地理信息系统原理、技术与方法》  97

最近几年来,地理信息系统无论是在理论上还是应用上都处在一个飞速发展的阶段。 GIS被应用于多个领域的建模和决策支持,如城市管理、区划、环境整治等等,地理信息成为信息时代重要的组成部分之一; “数字地球”概念的提出,更进一步推动了作为其技术支撑的GIS的发展。 与此同时,一些学者致力于相关的理论研究,如空间感知、空间数据误差、空间关系的形式化等等。 这恰好说明了地理信息系统作为应用技术和学科的两个方面,并且这两个方面构成了相互促进的发展过程。