分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
/s/1RvwyT25sO6X0Ul1C8rBHGw 提取码: hvqi
一、对象和类型
类(class)是C#开发过程中最经常接触到的东西,类中可能包含有字段、常量、属性、方法、构造函数、索引器、事件、运算符、析构函数、内部类。以及我们可以使用多种关键字来辅助描述它达到我们希望它所拥有的功能。与类相似的还有结构(struct),在下面将会进行具体的描述。
1、类和结构的区别:
所有的类都是派生于一个名为Object的基类,就算是我们自己定义的类如果在定义时没有指定基类系统将隐式的将Object类作为它的基类。这对于结构来说是一样的,每个结构派生自ValueType类,而ValueType则又派生于Object类。
由此我们可以看出结构与类十分相似,但也有很明显的不同之处:
1》首先,尽管在语法上可以将结构当做类来处理,但结构是值类型的也就是说结构所赋的值是真正的值而不是引用,结构的值放置在栈中而不是指向堆也不会再堆中占用内存,这使结构在性能上具有优势。而类所实例化的对象储存的是一个引用地址,当使用new语句时,系统将在托管堆空间中申请内存存放一个对象,并将这个对象的引用地址给类声明的变量。
2》其次,结构不是为继承而被创建出来的,所以结构并不支持继承。但其实结构是派生于Object类的,所以结构也可以使用Object中的方法。
3》还有,结构的初始化不同于类的初始化,例如:
Dimensions dimension;
dimension.Length=100;
二、C#高级知识
你可以在Github或者Gitee中找到一些开源的项目,比如图书管理系统、博客系统,论坛等一系列使用高级知识来实现的项目,你需要先阅读代码,看别人是如何实现的,从而在仿照别人的实现过程来按照自己的想法编写自己的系统。(通过这样的实战项目,你可以快速的上手实现,学着并尝试做一个全栈开发,自己一个人从前端到后端再到发布上线,体验下整个软件项目的完整生命周期)。
它是最原始的数据库访问技术,目前基本都不使用,市面上公司都是使用封装好的ORM,但是你也得学习它。你得了解它是如何和数据库进行交流的,尝试着自己做这些步奏,看是否能顺利连接数据库,并进行一系列的CRUD操作。
MVC:它是微软将模型-视图-控制器的编程思想进行程序化的一种实现,你学习它可以快速上手实现一个网站,通过这个技术你可以实现自己的想法,比如做个图书管理系统等,在结合之前学习的ADO.NET技术,就可以将前端到数据库都打通了。
ORM简称对象关系映射,是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。目前在C#语言中比较流行的有Entity Framework,NHibernate,SqlSugar(国内)。这块你主要学习EF就可以,其余的编程思想都是想通的,你只要学会使用其中一个,其余的简单学习下技巧就很快能上手。
Web API:它是一种实现前后端分离的后端技术(SPA),也是目前市场上大家普遍使用的技术,通过它可以很简单的实现SPA,后端开发人员只需要编写后端的业务代码,通过API暴露出访问接口,可供前端人员进行使用。
三、引用类型和值类型的区别?
在C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中。
值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。值类型变量声明后,不管是否已经赋值,编译器为其分配内存。
引用类型(reference type):string 和 class统称为引用类型。当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有为其分配堆上的内存空间。当使用 new 创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中。
值类型的实例通常是在线程栈上分配的(静态分配),但是在某些情形下可以存储在堆中。引用类型的对象总是在进程堆中分配(动态分配)。
四、.NET类型
.NET其实有着自己的数据类型,编译器将把C#所定义的数据类型映射到.NET中,有很大的相似但也有明显的区别,举个例子:C#中的int总是32位而.NET则需要根据操作系统来确定。
之后的知识我就不细讲了,值得一提的有:
1)所以整形类型都支持十进制和十六进制,十六进制以 0x开头作为前缀。
2)C# 7支持使用下划线_分隔,但不支持下划线在前,7.2之后支持前缀下划线
3)可以使用0b作为表示二进制整数,但值只能为0和1组合。
4)C#提供了许多浮点类型的数据类型 float为单精度7位精度使用f后缀 double为双精度15/16位精度使用d,特别说明C#专门使用decimal作为财务运算使用的数据类型,用于28位精度使用m为后缀标识。
5)与Java一样string为特殊的一个数据类型,它是引用类型的数据类型,但不同的是它在被赋予另一个string类型数据时,它俩指向堆中同一个对象,当它再次被赋值时,会重新再堆中建立一个新对象再将地址给与它。所以说字符串string具有特殊性。
五、C#创建.Net应用程序
Asp.net应用程序:web窗体,web服务器控件,xml Web服务;
Windows窗体;
WPF技术:WPF在建立应用程序时使用XAML可扩展的应用程序标记语言,XAML是用于创建窗体的XML声明,代表WPF应用程序的所有可视化部分和操作。WPF是面向声明性编程的一步,而声明性编程是编程业的趋势。声明性编程是指:不是利用编程语言,如C#,VB或JAVA,通过编程来创建对象,而是通过XML类型的编程来声明所有元素;
Windows控件;
Windows服务:System.ServiceProcess名称空间中的.Net Framework基类可以处理许多与服务相关的样本任务;
WCF技术:可以采用多种方式将数据和服务从一处移动到另一处如:ASP.NET Web服务、.Net Remoting、Enterprise Services和MSMQ等,由于每种方式都适合不同的场合,所以Microsoft把这些技术集成在一起放在.Net Framework中,即WCF。WCF允许建立好服务后,只要修改配置文件,就可以用多种方式提供该服务,WCF是一种连接各种系统的强大新方式;
Windows WF:WF有一个新的流程控制类Flowchart,还有一些新活动,如DoWhite、ForEach和ParalleForEach。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信873 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传