面向对象基础——结构体

1.结构体的语法

  定义的时候需要使用关键字struct

[public] struct 结构名

{

public 类型名 变量名;

}

   我们常见的结构体:System.Drawing.Point、Size、Color

注意:

1.结构使用时可以new,也可以不new。如果不new,则使用前必须为结构成员赋值。

2.在结构中不能为变量直接赋初值,除非const(常量)、static(静态变量)

2.结构体与类

  它们是 .NET Framework 中的通用类型系统的两种基本构造。两者在本质上都属于数据结构,封装着一组整体作为一个逻辑单位的数据和行为。数据和行为是该类或结构的“成员”,它们包含各自的方法、属性和事件等。它们共享着大多数相同的语法。

  结构的使用方法与类很相似。什么时候使用类?什么时候使用结构?

  1.是否需要使用面向对象的特性:封装、继承、多态。,如果需要在某些情况下被继承或者使用多态等特性则只能用类。

  2.当类型中(类或结构)的成员比较多的时候,则考虑使用类。

3.结构体与类的详细区别

  1. 在语法上结构体受到的限制要比类更多:

    (1)在声明结构体的时候,如果要对字段赋值,那么这些字段必须声明为 const 或 static,否则无法初始化。

       在声明类的时候,可以对类中的所有字段赋值。

    (2)结构不能声明默认构造函数(没有参数的构造函数)或析构函数,如果要声明构造函数,必须声明带参数的构造函数。

       结构体的构造函数也可以重载,在构造函数中必须对结构体所有的成员进行初始化。

    (3)在结构体中不能定义析构函数

    (4)结构体不具备面向对象的特征,结构体不能从类或其他结构继承。所有结构都直接继承自System.ValueType,所有的类都继承自 System.Object

  2. 结构体是值类型,类是引用类型:

    结构体在栈中创建,类在堆中创建。

    将结构体赋值给新变量:

    将类赋值给新变量:

  

3. 结构体实现接口:

  结构体也可以实现接口,进行这样的操作后,获得的变量是引用类型。

  有结构体Struct1实现了接口Interface1 ,Interface1 face = new Struct1();

  这里我们获得的变量face是引用类型。

4. 结构体和类用途不同:

   类通常用于对较为复杂的行为建模,或对要在创建类对象后进行修改的数据建模。结构最适合一些小型数据结构,这些数据结构包含的数据以创建结构后不修改的数据为主。

结构体使用的例子:

 1     //结构体班级
 2     struct StructClass : IClass
 3     {
 4         public int Count;//人数
 5         public void AddStudent()
 6         {
 7             Count++;
 8         }
 9
10         public void ShowCount()
11         {
12             Console.WriteLine(Count);
13         }
14
15     }
16     //接口
17     interface IClass
18     {
19         void AddStudent();//添加学生
20         void ShowCount();//显示学生人数
21     }
22     class Program
23     {
24         static void Main(string[] args)
25         {
26             StructClass s1 = new StructClass();
27             StructClass s2 = s1;
28             s1.AddStudent();
29             s1.ShowCount(); //输出1
30             s2.ShowCount(); //输出0
31             //说明s2和s1不指向同一个对象,s2=s1是创建了一个s1的副本
32             //这是值类型很显著的标志
33
34             IClass ic1 = new StructClass();
35             IClass ic2 = ic1;
36             ic1.AddStudent();
37             ic1.ShowCount();//输出1
38             ic2.ShowCount();//输出1
39             //说明ic2和ic1指向同一个对象,ic2=ic1是将ic1的引用赋给ic2
40             //这是引用类型很显著的标志
41         }
42     }  
时间: 2024-12-09 02:57:02

面向对象基础——结构体的相关文章

黑马程序员---C语言基础---结构体

------iOS培训.Java培训.Android培训, iOS学习型技术博客,期待与您交流------ C语言基础---结构体 一.什么是结构体 介绍结构体之前,我想先简单介绍下数组.我想大家对数组都再熟悉不过了,顾名思义,数组就是将一些数据(元素)组合在一起,作为一个整体.使用数组需要注意的是这些元素必须是相同类型.而结构体和数组类似,也是将一些数据组合在一起作为一个整体,但是这些元素可以是不同类型.可以这么理解:结构体是更加灵活的数组,因为它允许元素是不同的类型. 实际生活中,如果我们要

C#语言基础——结构体和枚举类型

结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承. 用结构的主要思想是用于创建小型的对象,如Point和FileInfo等等.这可以节省内存,因为没有如类对象所需的那样有额外的引用产生.例如,当声明含有成千上万个对象的数组时,这会引起极大的差异. 结构体是一个变量组,将一组变量放在一起,

C#基础——结构体

集合:数组:同一类型,固定长度集合:不同类型,不固定长度 要使用集合,必须先引用命名空间:using System.Collections; 定义:ArrayList arr = new ArrayList(); 赋值:arr.Add("值/变量"); //object类型object类型:所有类型的基础类型(基类) 获取个数:arr.Count; 取值:arr[索引] 插队:arr.Insert(索引,值/变量) 移除:arr.Remove(值);arr.RemoveAt(索引);

2016.8.3 C#基础 结构体,枚举类型

结构体-枚举类型 一.枚举类型 枚举(enum)是值类型的一种特殊形式,它从System.Enum继承而来,并为基础类型的值提供替代名称.枚举类型有名称.基础类型和一组字段.基础类型必须是一个除char 类型外的内置的有符号(或无符号)整数类型(如Byte.Int32或UInt64).也可以说,枚举类型是一组常量的集合. 1.定义:Enum....{E} 枚举元素的默认基础类型为int.默认情况下,第一个枚举数的值为0,后面每个枚举数的值依次递增1.例如: enum meiju://枚举是常量的

c#基础 结构体、枚举类型

结构体 ~struct 定义: 结构体一般定义在Main函数上面,位于Class下面,作为一个类:一般情况Struct定义在Main函数前面,Main函数里面的地方都可以使用,参数前面加上public代表公用变量. 格式: struct +结构体的名称 { public int+变量名; public double+变量名: public string+变量名: } 以上就是定义一个结构体的格式,里面包含许多种数据类型,如整形int,字符串string,带小数点decimal等: 用法: (1)

面向对象之结构体1

Golang语言面向对象编程说明: 1)Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言.所以我们说Golang支持面向对象编程特性是比较准确的. 2)Golang没有类(class),Go语言的结构体(struct)和其它编程语言的类(class)有同等的地位,你可以理解Golang是基于struct来实现OOP特性的. 3)Golang面向对象编程非常简洁,去掉了传统OOP语言的继承.方法重载.构造函数和析构函数.隐藏的this指针等等. 4

C基础--结构体

C语言,结构体语法: 1.定义结构体类型: struct 结构体名称 { 成员类型 成员名称1; 成员类型 成员名称2; ... }; 例:struct Date { int year ; int month ; int day ; } 2.结构体在内存中 例一: struct Student { char *name;//指针占8个字节 int no;//int占4个字节 int age;//int占4个字节 }; struct Student s1 ; int length = sizeof

数据结构基础-结构体struct及类型别名typedef的使用

一.结构体的创建 在C语言中,实现数据结构的一种常用方法便是使用结构体(structure)其示例代码如下: struct stu { int num; char ch; }; struct表示创建结构体 stu为结构体名称,里面的内容是各种变量类型(可以嵌套struct),然后使用示例如下: struct stu s; scanf("%d", &s.num); printf("%d\n", s.num); 第一行表示创建结构为stu的结构体s,此后访问结构

OC基础--结构体 枚举做类成员属性

结构体  枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期  毕业日期  --  结构体 代码示例: 声明文件 Student.h: #import <Foundation/Foundation.h> typedef struct { int year; int month; int day; } Date; typedef enum { kGenderGirl = 0, kGenderBoy = 1, kGenderChunGe = 2 } Gender; @inter