第四章 类型与变量

一、类型

类型主要分为两种:值类型(value type)和引用类型(reference type)。

        值类型进一步分为:简单类型(simple type)、枚举类型(enum type)、结构类型(struct type)、为空类型(nullable type);

        引用类型进一步分为类类型(class type)、接口类型(interface type)、数组类型(array type)、委托类型(delegate type)。

如下表:

类别说明
值类型简单类型有符号整型:sbyte short int long
无符号整型:byte ushort uint ulong
Unicode字符:char
IEEE浮点型:float double
高精度小数型:decimal
布尔:bool
枚举类型enum E {...}形式的用户定义的类型
结构类型struct S {...}形式的用户定义的类型
为空类型其他所有具有null值的值类型的扩展
引用类型类类型所有其他类型的最终基类:object
Unicode字符串:string
class C{...} 形式的用户定义的类型
接口类型interface I{...}形式的用户定义的类型
数组类型一维和多维数组,如:int[]和int[,]
委托类型delegate in to D{...}形式的用户定义的类型

值类型精度范围:

类别类型位数范围/精度
有符号整型sbyte8-128~127
short16-32768~32767
int32-2147483648~2147483647
long64-9223372036854775808~9223372036854775807
无符号整型byte80~255
ushort160~65535
uint320~4294967295
ulong

64

0~18446744073709551615
浮点型float321.5*10的-45次方~3.4*10的38次方,7位精度
double641.5*10的-324次方~3.4*10的308次方,15位精度
十进制小数decimal1281.0*10的-28次方~7.9*10的28次方,28位精度

        类类型定义了一个包含数据成员(字段)和函数成员(方法、属性)的数据结构。类类型支持单已继承和多态,这些派生类可用来扩展和专用化基类的机制。

        结构类型与类类型相似,表示一个带有数据成员和函数成员的结构。不同的是,结构是一种值类型,且不需要堆分配。结构类型不支持用户指定继承,且所有结构类型都隐式地从类型object继承。

        接口类型定义了一个协定,作为一个公共函数成员命名集。实现某个接口的类或结构必须提供该接口的函数成员的实现。一个接口可以从多个基接口继承,而一个类或结构可实现多个接口。

        委托类型表示对具有特定参数列表和返回类型的方法的引用。通过委托,我们能够将方法作为实体复制给变量和作为参数传递。未退类似于在其他某些语言的函数指针的概念,但是与函数指针不同,委托是面向对象的,并且是类型安全的。

        枚举类型是具有命名常量的独特类型。每种枚举类型都具有一个基础类型,该基础类型必须是8钟整型之一。枚举类型的值集和它的基础类型的值集相同。

二、变量

变量分为:静态变量、实例变量、数组元素、值参数、引用参数、输出参数、局部变量。

例子

class A
{
    public static int x;
    int y;
    
    void Func(int[] v ,int a, ref int b,out int c)
    { 
        int i = 1;
        c = a + b++;
    }
}

如上面的例子:x是静态变量、y是实例变量、v[0]是数组元素、a是值参数、b是引用参数、c是输出参数、i是局部变量。

静态变量:用static修饰符声明的字段称为静态变量。

实例变量:未用static修饰符声明的字段成为实例变量。

数组元素:在创建数组是实例时开始存在,在没有对该数组实例的引用时停止存在。

值参数:未用ref或out修饰符声明的参数,值参数在调用该形参所属的函数成员。

引用参数:用ref修饰符声明的参数。不创建新的存储位置。表示对该函数成员或匿名函数调用中以实参形式给出变量所在的存储位置。因此,引用参数的值总是与基础变量相同。

输出参数:用out修饰符声明的形参是输出参数。输出参数不创建新的存储位置,而输出参数表示对该函数成员或委托调用中以实参形式给出的变量所在的存储位置。因此,输出参数的值总是与基础变量相同。

局部变量:可通过local-variable-declaration来声明,此声明可以出现在语句块(block)、for语句(for-statement)、switch语句(switch-statement)或using语句(using-statement);也可由foreach语句(foreach-statement)或try语句(try-statement)的catch(specific-catch-clause)语句来声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值