`
zhaosoft
  • 浏览: 187065 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C#基础学习(一)类与结构

阅读更多

一.类与结构的示例比较:
结构示例:
public struct Person
{
string Name;
int height;
int weight
public bool overWeight()
{
//implement something
}
}
类示例:
public class TestTime
{
int hours;
int minutes;
int seconds;

public void passtime()
{
//implementation of behavior
}
}
调用过程:
public class Test
{
public static ovid Main
{
Person Myperson=new Person //声明结构
TestTime Mytime=New TestTime //声明类
}
}
从上面的例子中我们可以看到,类的声明和结构的声明非常类似,只是限定符后面是 struct 还是 class 的区别,而且使用时,定义新的结构和定义新的类的方法也非常类似。那么类和结构的具体区别是什么呢?

二 .类与结构的差别
1. 值类型与引用类型
结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型
类是引用类型:引用类型在堆上分配地址
堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑
因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用
注:
1.虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object
2.虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段将保持未赋值状态,且对象不可用
2.继承性
结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed .
类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承
注:虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样
例如:结构实现接口
interface IImage

{
void Paint();
}

struct Picture : IImage
{
public void Paint()
{
// painting code goes here
}
private int x, y, z; // other struct members
}

3.内部结构:
结构:
没有默认的构造函数,但是可以添加构造函数
没有析构函数
没有 abstract 和 sealed(因为不能继承)
不能有protected 修饰符
可以不使用new 初始化
在结构中初始化实例字段是错误的
类:
有默认的构造函数
有析构函数
可以使用 abstract 和 sealed
有protected 修饰符
必须使用new 初始化

三.如何选择结构还是类
讨论了结构与类的相同之处和差别之后,下面讨论如何选择使用结构还是类:
1. 堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些
2. 结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。
3. 在表现抽象和多级别的对象层次时,类是最好的选择
4. 大多数情况下该类型只是一些数据时,结构时最佳的选择

分享到:
评论

相关推荐

    C# 学习记录,C#基础语法学习案例37套源码(适合正在学C#的学者)

    C# 学习记录,C#基础语法学习案例37套源码(适合正在学C#的学者) 001第一个HelloWorld程序 002CSharp数据类型与变量 003类型推断 004各种数据类型大小比对及所占字节 005枚举 006结构体 007元组 008字符串 009...

    C#数据类型,数组、结构和枚举是学习C#的基础!

    C# 数据类型、数组、结构和枚举 C# 数据类型是学习 C# 的基础,它们是构成 C# 程序设计...C# 数据类型、数组、结构和枚举是学习 C# 的基础,它们是构成 C# 程序设计的基本元素。理解这些概念和技术是学习 C# 的关键。

    C#基础类 常用类 常用方法源码 .NET 工具类 源码

    这个压缩包“C#基础类 常用类 常用方法源码 .NET 工具类 源码”包含了C#编程中的基础类和常用工具类的源代码,对于学习和理解C#的编程实践非常有帮助。下面,我们将详细探讨这些关键知识点。 1. **基础类**:在C#中...

    c#学习基础笔记源码

    属性(Property)是C#中访问类成员的一种封装机制,它提供了一种安全的方式来获取或设置类的数据。属性通常由一对getter和setter方法组成,可以控制对数据的访问权限。 构造器(Constructor)用于初始化新创建的...

    C#版数据结构实验一数据及答案

    "C#版数据结构实验一数据及答案"这个标题暗示我们将会学习如何在C#中实现基础的数据结构,并通过一系列的实验来加深理解。数据结构是计算机科学的基础,它涉及到如何有效地存储和组织数据,以便进行高效的检索、更新...

    C#数据结构,不错的基础类图书

    《C#数据结构,不错的基础类图书》不仅仅是一本介绍数据结构的书籍,它是将理论与实践紧密结合的指南,特别适合那些希望深入学习C#编程和数据结构的读者。通过本书,不仅可以学到扎实的理论知识,还能掌握实用的编程...

    c# 数据结构 基础知识

    1. **第一章**:介绍数据结构和算法的基本概念,同时提供必要的数学和C#基础知识。 2. **第二章至第六章**:分别讨论线性表、栈和队列、串和数组、树型结构和图结构等常见数据结构及其应用。此外,还会探讨.NET框架...

    C#基础与案例开发详解光盘源码(上)

    《C#基础与案例开发详解》是一本针对初学者和有一定经验的开发者设计的教程,旨在深入浅出地介绍C#编程语言的基础知识,并通过实际案例帮助读者掌握C#的运用技巧。光盘源码提供了书中所有示例的源代码,使学习过程...

    C#基础编程练习题

    本资料包含了一些在Visual Studio 2010环境下编写的C#基础编程练习题,这些练习题旨在帮助学习者巩固和提升C#编程技能。 1. 变量与数据类型:C#中变量是用来存储数据的容器,包括基本数据类型(如int、float、bool...

    C#6.0学习笔记 从第一行C#代码到第一个项目设计周家安著

    通过《C# 6.0学习笔记》,读者不仅能掌握C#编程语言的基础,还能了解到高级特性和实际开发中的应用,为成为一个合格的C#开发者奠定坚实基础。无论是自学还是教学,这本书都是不可多得的参考资料。

    C#基础教程C# C# C# C#

    【C#基础教程C# C# C# C#】是一份专门为C#编程语言初学者设计的详尽教程。C#(读作“C Sharp”)是微软公司于2000年推出的一种面向对象的、类型安全的、现代的编程语言,主要用于构建Windows平台的应用程序、Web应用...

    C#基础教程 winform教程

    C#基础教程 WINFORM 教程 C# 语言是一种面向对象的高级语言,支持两种类型:值类型和引用类型。值类型包括简单类型、枚举类型和结构类型。引用类型包括类、接口、委托和数组。变量的类型声明每个变量必须预先声明其...

    武汉大学 C#数据结构与算法

    《武汉大学 C#数据结构与算法》是一门深入探讨计算机科学基础的课程,主要针对C#编程语言,涵盖了数据结构和算法这两个核心概念。在学习这门课程时,你将有机会掌握C#语言如何用于实现高效的数据管理和计算方法。 1...

    数据结构c#版

    总之,这本书不仅为学习C#语言的读者提供了一条掌握数据结构和算法的清晰路径,而且对于.NET平台下的开发者来说,是一本不可多得的学习资源,无论是在学术上还是在实际工作中都能提供极大的帮助。

    数据结构 C#版 有兴趣的可以下来学习. 对学习数据结构很有好处.

    - 第1章介绍了数据结构和算法的基本概念,以及本书所需的数学和C#基础知识。 - 第2章至第6章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的数据结构及其应用,并介绍了.NET框架中的相关数据结构...

    C#基础知识学习

    C#基础知识学习 本资源是关于C#基础知识学习的视频课程,主要面向初学者,旨在帮助他们快速掌握C#语言的基础知识点。本课程涵盖了C#.NET框架的基础知识,包括变量、数据类型、逻辑表达式、变量交换、try-catch异常...

    关于C#学习资料

    首先,C#的基础学习通常从了解其语法结构开始。C#语法在很大程度上受到了C++和Java的影响,但更加现代和简化。它支持类、接口、结构等面向对象特性,还有委托、事件、属性、索引器等高级概念。学习C#,你需要掌握...

    瑞儿网c#基础学习

    在“瑞儿网c#基础学习”这个资源中,很可能是为了帮助初学者或开发者掌握C#的基础知识。 C#的基础学习通常包括以下几个方面: 1. **变量与数据类型**:C#中的数据类型包括基本类型(如int、double、bool等)和引用...

    C#基础教学资源

    《C#基础教学资源》是一份专为学习C#编程语言和Unity3D开发的初学者准备的教学资料。这份资源涵盖了C#语言的基础知识,并通过一系列的测试来帮助学习者巩固所学。对于想要深入理解和掌握C#以及使用它在Unity3D中编写...

    C#数据结构和算法分析

    本书的一个显著特点是将数据结构与C#语言紧密结合起来。通过这种方式,不仅可以加深读者对于数据结构理论的理解,还能让读者学会如何在实践中运用这些理论。 - **数据结构与.NET框架**:.NET框架提供了丰富的类库...

Global site tag (gtag.js) - Google Analytics