struct( 结构 )分为以下几类,struct( 结构 )分为以下几类

1、C#的值类型

1、C#的值类型

有多少个特点:

有多少个特色:

  • 积累在栈里 
  • 依照值类型的变量直接蕴涵值(值类型存款和储蓄实际值)。
    将2个值类型变量赋给另3个值类型变量时,将复制包涵的值。
    那与引用类型变量的赋值区别,引用类型变量的赋值只复制对目的的引用,而不复制对象自己。
  • 持有的值类型均隐式派生自 System.ValueType。
  • 与引用类型分歧,没办法从值类型派生出新的项目。
    但与引用类型同样的是,结构也能够落成接口。
  • 与引用类型分裂,值类型不可能包涵 null 值。 可是,可以为 null 的品类
    效能允许值类型分配给 null。
  • 每个值类型均有一个隐式的暗中同意构造函数来起头化该类型的默许值。
  • 积累在栈里 
  • 依照值类型的变量直接包蕴值(值类型存款和储蓄实际值)。
    将多个值类型变量赋给另一个值类型变量时,将复制包括的值。
    那与引用类型变量的赋值不一致,引用类型变量的赋值只复制对目标的引用,而不复制对象自己。
  • 有着的值类型均隐式派生自 System.ValueType。
  • 与引用类型不相同,不能够从值类型派生出新的项目。
    但与引用类型同样的是,结构也能够兑现接口。
  • 与引用类型分化,值类型不恐怕包括 null 值。 不过,可以为 null 的品类
    成效允许值类型分配给 null。
  • 每一种值类型均有1个隐式的私下认可构造函数来开始化该类型的默许值。

 

 

值类型分为两类:
struct( 结构
)、 enum(枚举 )

值类型分为两类:
struct( 结构 )、 enum(枚举 )

struct( 结构 )分为以下几类:

struct( 结构 )分为以下几类:

  • Numeric(数值)类型

    • 整型

    • 浮点型

    • decimal

  • bool

  • 用户定义的组织。

  • Numeric(数值)类型

    • 整型

    • 浮点型

    • decimal

  • bool

  • 用户定义的结构。

下表列出了 C# 中置放类型中可用的值类型:

下表列出了 C# 中放置类型中可用的值类型:

类型 描述 范围 默认值
bool 布尔值 True 或 False False
byte 8 位无符号整数 0 到 255 0
char 16 位 Unicode 字符 U +0000 到 U +ffff ‘\0’
decimal 128 位精确的十进制值,28-29 有效位数 (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 0.0M
double 64 位双精度浮点型 (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 0.0D
float 32 位单精度浮点型 -3.4 x 1038 到 + 3.4 x 1038 0.0F
int 32 位有符号整数类型 -2,147,483,648 到 2,147,483,647 0
long 64 位有符号整数类型 -923,372,036,854,775,808 到 9,223,372,036,854,775,807 0L
sbyte 8 位有符号整数类型 -128 到 127 0
short 16 位有符号整数类型 -32,768 到 32,767 0
uint 32 位无符号整数类型 0 到 4,294,967,295 0
ulong 64 位无符号整数类型 0 到 18,446,744,073,709,551,615 0
ushort 16 位无符号整数类型 0 到 65,535 0
类型 描述 范围 默认值
bool 布尔值 True 或 False False
byte 8 位无符号整数 0 到 255 0
char 16 位 Unicode 字符 U +0000 到 U +ffff ‘\0’
decimal 128 位精确的十进制值,28-29 有效位数 (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 0.0M
double 64 位双精度浮点型 (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 0.0D
float 32 位单精度浮点型 -3.4 x 1038 到 + 3.4 x 1038 0.0F
int 32 位有符号整数类型 -2,147,483,648 到 2,147,483,647 0
long 64 位有符号整数类型 -923,372,036,854,775,808 到 9,223,372,036,854,775,807 0L
sbyte 8 位有符号整数类型 -128 到 127 0
short 16 位有符号整数类型 -32,768 到 32,767 0
uint 32 位无符号整数类型 0 到 4,294,967,295 0
ulong 64 位无符号整数类型 0 到 18,446,744,073,709,551,615 0
ushort 16 位无符号整数类型 0 到 65,535 0

实在是简单类型,全体的简短类型(C# 语言的组成都部队分)均为 .NET
Framework 系统项指标小名。 举例,int 是 System.Int3二的外号。可使用文字起初化轻便类型。 举个例子,“A”是 char 类型的文字,而 2004是 int
类型的文字。如需得到三个门类或1个变量在一定平台上的纯正尺寸,能够动用
sizeof 方法。表明式 sizeof(type)
发生以字节为单位存款和储蓄对象或项目标贮存尺寸。上面比如获取其余机器上 int
类型的储存尺寸:

实质上是简约类型,全数的简约类型(C# 语言的组成都部队分)均为 .NET
Framework 系统项目标小名。 举个例子,int 是 System.Int32的小名。可使用文字开首化轻易类型。 举个例子,“A”是 char 类型的文字,而 2001是 int
类型的文字。如需获得八个类别或一个变量在特定平台上的可信尺寸,能够应用
sizeof 方法。表明式 sizeof(type)
产生以字节为单位存款和储蓄对象或项目标储存尺寸。上边举个例子获取其余机器上 int
类型的储存尺寸:

 1 namespace DataTypeApplication
 2 {
 3    class Program
 4    {
 5       static void Main(string[] args)
 6       {
 7          Console.WriteLine("Size of int: {0}", sizeof(int));
 8          Console.ReadLine();
 9       }
10    }
11 }

图片 1

当下面的代码被编写翻译和实行时,它会发出下列结果:

 1 namespace DataTypeApplication
 2 {
 3    class Program
 4    {
 5       static void Main(string[] args)
 6       {
 7          Console.WriteLine("Size of int: {0}", sizeof(int));
 8          Console.ReadLine();
 9       }
10    }
11 }
Size of int: 4

图片 2

 

当上面的代码被编译和实施时,它会发生下列结果:

 

Size of int: 4

2、 C# 的 struct

 

struct(结构)常常作为一小组相关变量的容器,在 C#
中它使得3个10足变量能够储存各个数据类型的相关数据。struct
关键字用于成立结构体,能够遵照如下的办法宣示 Person结构:

 

1 struct Person
2 {
3    public string name;
4    public int age;
5    public string sex;
6 };  

2、 C# 的 struct 

上边包车型大巴主次演示了组织的用法:

struct(结构)平时作为一小组相关变量的容器,在 C#
中它使得3个拾足变量可以积累种种数据类型的相关数据。struct
关键字用于创制结构体,能够依据如下的章程宣示 Person结构:

using System;

namespace MyStruct
{
    struct Person
    {
        public string name;
        public int age;
        public string sex;
    }

    class Program
    {
        static void Main(string[] args)
        {
            Person person1;
            person1.name = "张三";
            person1.age = 18;
            person1.sex = "男";

            Person person2;
            person2.name = "李四";
            person2.age = 20;
            person2.sex = "男";

            //输出 person1 的信息
            Console.WriteLine("person1 姓名:{0}", person1.name);
            Console.WriteLine("person1 性别:{0}", person1.sex);
            Console.WriteLine("person1 年龄:{0}", person1.age);

            //输出 person2 的信息
            Console.WriteLine("person2 姓名:{0}", person2.name);
            Console.WriteLine("person2 性别:{0}", person2.sex);
            Console.WriteLine("person2 年龄:{0}", person2.age);

            Console.Read();
        }
    }
}
1 struct Person
2 {
3    public string name;
4    public int age;
5    public string sex;
6 };  

 

上边包车型客车次第演示了结构的用法:

当上面包车型客车代码被编写翻译和实行时,它会时有爆发下列结果:

图片 3

person1 姓名:张三
person1 性别:男
person1 年龄:18
person2 姓名:李四
person3 性别:男
person4 年龄:20
using System;

namespace MyStruct
{
    struct Person
    {
        public string name;
        public int age;
        public string sex;
    }

    class Program
    {
        static void Main(string[] args)
        {
            Person person1;
            person1.name = "张三";
            person1.age = 18;
            person1.sex = "男";

            Person person2;
            person2.name = "李四";
            person2.age = 20;
            person2.sex = "男";

            //输出 person1 的信息
            Console.WriteLine("person1 姓名:{0}", person1.name);
            Console.WriteLine("person1 性别:{0}", person1.sex);
            Console.WriteLine("person1 年龄:{0}", person1.age);

            //输出 person2 的信息
            Console.WriteLine("person2 姓名:{0}", person2.name);
            Console.WriteLine("person2 性别:{0}", person2.sex);
            Console.WriteLine("person2 年龄:{0}", person2.age);

            Console.Read();
        }
    }
}

 

图片 4

布局与类具有众多同等的语法,但组织比类受到的界定越来越多:

 

  • 协会可含蓄艺术、字段、索引、属性、运算符方法和事件。
  • 布局不能够声称暗许构造函数(未有参数的构造函数)或终结器。
  • 结构得以注明具备参数的构造函数。
  • 二个构造比十分的小概继续自另一个协会或类,并且它无法为类的基类。
  • 组织可落成叁个或八个接口。
  • 协会成员不可能钦命为 abstract、virtual 或 protected。
  • 与类不相同,无需使用 new 运算符就可以对组织实行实例化。
  • 假定不使用 New
    操作符,唯有在富有的字段都被开首化之后,字段才被赋值,对象才被利用。

当上边的代码被编译和试行时,它会生出下列结果:

多提一下:可将组织类型强制调换为接口类型,那将变成“装箱”操作,以将组织包装在托管堆上的引用类型对象内。
当将值类型传递到接受 Object
作为输入参数的方法时,将生出装箱操作。详细的会在背后装箱和收回装箱表达。

person1 姓名:张三
person1 性别:男
person1 年龄:18
person2 姓名:李四
person3 性别:男
person4 年龄:20

 

 

C# 的 enum 

组织与类拥有众多如出1辙的语法,但协会比类受到的限制更加多:

枚举类型(也叫做枚举)为定义一组能够赋给变量的命名整数常量提供了一种有效的秘籍。
举例,假若您必须定义3个变量,该变量的值表示十七日中的一天。
该变量只好存储七个有含义的值。
若要定义这几个值,能够动用枚举类型。枚举类型是使用 enum 关键字证明的:

  • 布局可含蓄艺术、字段、索引、属性、运算符方法和事件。
  • 结构无法宣称暗许构造函数(没有参数的构造函数)或终结器。
  • 结构能够表明具备参数的构造函数。
  • 二个构造不恐怕继续自另一个组织或类,并且它不可能为类的基类。
  • 组织可完结一个或多个接口。
  • 组织成员不能钦定为 abstract、virtual 或 protected。
  • 与类不一致,无需使用 new 运算符就可以对结构举办实例化。
  • 如若不采纳 New
    操作符,唯有在有着的字段都被起始化之后,字段才被赋值,对象才被应用。
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }; 

多提一下:可将组织类型强制调换为接口类型,那将变成“装箱”操作,以将组织包装在托管堆上的引用类型对象内。
当将值类型传递到接受 Object
作为输入参数的法门时,将发出装箱操作。详细的会在背后装箱和撤回装箱表达。

 

 

暗许景况下,枚举中种种元素的基本功项目是 int。
能够动用冒号钦命另1种整数值类型,如前方的示范所示。准许使用的档案的次序有
byte、sbyte、short、ushort、int、uint、long 或 ulong。

C# 的 enum 

 

枚举类型(也叫做枚举)为定义一组能够赋给变量的命名整数常量提供了壹种有效的点子。
比方,即使您必须定义七个变量,该变量的值表示二10二一日中的一天。
该变量只好存款和储蓄七个有含义的值。
若要定义那么些值,能够动用枚举类型。枚举类型是应用 enum 关键字注解的:

习感到常状态下,最佳是在命名空间内直接定义枚举,以便该命名空间中的全数类都能够平等有益地拜会它。
不过,还是能够将枚举嵌套在类或组织中。
默许意况下,第三个枚举数的值为 0,前边每一种枚举数的值依次递增 一。
举个例子,上面包车型地铁枚举,Sat 是 0,Sun 是 一,Mon 是 二 等。

enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }; 
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

 

 

私下认可情状下,枚举中各类成分的功底项目是 int。
能够选取冒号钦定另壹种整数值类型,如前方的示范所示。准许使用的门类有
byte、sbyte、short、ushort、int、uint、long 或 ulong。

 

 

如上面包车型客车言传身教所示枚举数可用开头值来重写暗中认可值。

平凡状态下,最好是在命名空间内直接定义枚举,以便该命名空间中的全部类都能够平等有益地拜会它。
不过,还是能够将枚举嵌套在类或结构中。
默许处境下,第贰个枚举数的值为 0,后边每种枚举数的值依次递增 一。
比方,上边包车型客车枚举,Sat 是 0,Sun 是 一,Mon 是 2 等。

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

 在此枚举中,强制因素系列从 一 而不是 0 起始。 但是,一般提议如此使用。注,枚举数的名称中无法包括空白。

 

 

 

1旦变量
meetingDay 的种类为 Days,则只可以将 Days
定义的某部值赋给它(无需显式强制调换)。 假若会议日期更换,能够将 Days
中的新值赋给 meetingDay:

如上面包车型客车言传身教所示枚举数可用初叶值来重写暗中同意值。

Days meetingDay = Days.Monday;
//...
meetingDay = Days.Friday;
enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

 能够将随机整数值赋给 meetingDay。 比如,代码行 meetingDay = (Days)
4贰 不会爆发错误。 但也不应有如此做,因为默许约定的是枚举变量只容纳枚举定义的值之1。 将大四值赋给枚举类型的变量很有不小只怕会导致错误。
 
上边包车型客车实例演示了枚举变量的用法:

 在此枚举中,强制因素连串从 一 而不是 0 开头。 可是,一般建议那样使用。注,枚举数的称号中无法包涵空白。

using System;

namespace MyEnum
{
    class Program
    {
        enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };
        static void Main(string[] args)
        {
            int WeekdayStart = (int)Days.Mon;
            int WeekdayEnd = (int)Days.Fri;
            Console.WriteLine("Monday: {0}", WeekdayStart);
            Console.WriteLine("Friday: {0}", WeekdayEnd);

            Console.Read();
        }
    }
}

 

 

例如变量
meetingDay 的项目为 Days,则只好将 Days
定义的某部值赋给它(无需显式强制调换)。 假若会议日期退换,能够将 Days
中的新值赋给 meetingDay:

当上边的代码被编写翻译和施行时,它会发出下列结果:

Days meetingDay = Days.Monday;
//...
meetingDay = Days.Friday;
Monday: 1
Friday: 5

 能够将随机整数值赋给 meetingDay。 举例,代码行 meetingDay = (Days)
4二 不会时有产生错误。 但也不应有如此做,因为暗中认可约定的是枚举变量只容纳枚举定义的值之一。 将任性值赋给枚举类型的变量很有希望会产生错误。
 
上边包车型大巴实例演示了枚举变量的用法:

品类源码下载:https://pan.baidu.com/s/1miOPAdU

图片 5


using System;

namespace MyEnum
{
    class Program
    {
        enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };
        static void Main(string[] args)
        {
            int WeekdayStart = (int)Days.Mon;
            int WeekdayEnd = (int)Days.Fri;
            Console.WriteLine("Monday: {0}", WeekdayStart);
            Console.WriteLine("Friday: {0}", WeekdayEnd);

            Console.Read();
        }
    }
}

 

图片 6

C#基础,目录

 

上一篇:4、C#基础 – C# 的
常见概念简述

当上边的代码被编写翻译和进行时,它会发出下列结果:

下一篇:

Monday: 1
Friday: 5

品类源码下载:https://pan.baidu.com/s/1miOPAdU

 

相关文章