赞
踩
一、特点:
1、通用性语言
2、类型安全
3、面向对象
二、目标:
1、生产力
2、简洁性
3、表达力
4、高性能
三、创作者:Anders Hejlsberg
·Turbo Pascal的创作者
·Delph的主设计师
·Typescript的创作者
·C#是平台中立的,与平台无关
一、封装:为对象(object)创造一个边界,来把外部的一些行为和内部的实现细节给分开。 通常对外部的行为就是public方法,而内部的实现细节通常是private方法。
二、继承
三、多态
C#里的基本构建块,是一个封装了数据和函数的这么一个单元,这个单元叫做“类型”。
C#里既然是一个统一的类型系统,所有类型都共同共享了一个基本类型,这个基本类型的名字就是object。这一特点呢,也决定无论你是什么样的类型,包括原始的数值型类型,或者是你自定义的业务型类型,都会共享着一些基本功能。 这些基本的功能呢,就来自于这些类型。
比如说,任何类型的实例,都可以通过to string这个方法把它转化为字符串。这是其中一个基本的功能。
在传统的面向对象的范式里,唯一的Type就是Class
而在C#里面呢,还有其他的类型,比如说这个interface,interface看起来跟class挺像的,但它只对这个成员进行描述而没有具体的实现,而具体实现是由继承了这个接口的其他类型进行实现。
接口在什么情况下会特别有用呢?就是在需要多重继承的场景会特别有用。比如说C++这个语言就支持多继承。而C#不支持多继承,想要支持多继承的场景,那我们就使用interface.
方法(Method);在纯粹的面向对象的范式里,所有的函数都是方法。
·方法还包括:属性(Property)和事件(Event),还有其他的
·属性(Property) 本身就是方法的其中一种,所以它也是函数成员。它呢,封装了对象的一部分状态。举个例子,比如说按钮这个对象,它的颜色就可以是一个属性。
·事件(Event) 也是方法的一种,也是函数成员。简化了对象状态更改的操作。
但是也借用了不少函数式编程的特性
·函数可以当作值来对待
在C#里我们可以使用委托,通过委托,C#就允许函数可以像值一样被存进其他的函数,也可以从其他的函数来返回。
·支持纯(purity)模式
这就是函数编程的核心,也是一种对声明式模式的一种赞同。而在C#里面,就有一些特性,它可以来支撑这些模式。比如说**C#里可以编写一些动态的,捕获一些匿名变量的一些函数,在C#里这个叫lamda表达式。**再比如,C#可以通过这种查询表达式来执行列表或者说是响应式编程。C#可以很简单的定义出只读字段。
类型的实例,只能通过定义好的协议来进行交互,从而保证类型的内部一致性。 比如说:你想把一个字符串类型像一个整数类型来操作,那就是不可以的。更具体的来说,C#支持一下三种类型
在编译的时候,就会保证这个语言的类型安全。这个类型就可以保证在这个程序运行之前,它可以消灭一大堆的错误。 消灭一大堆的错误是繁重的,它就相当于把这项繁重的工作从运行时(运行时你可以做单元测试来发现这些大量的错误)移交给了编译器,这样可以保证程序里的所有类型在一起正常工作。
有了这个静态类型,Visual Studio就有了智能提示。C#整体来说还是静态类型的语言
之所以叫强类型语言,是因为它的类型规则非常严格。比如说,不可以把一个浮点型的数值传递给只接受整型的这么一个函数,除非你对它进行转型。此外,强类型的这个特点呢,也可以保证C#的代码也可以在沙箱中运行。沙箱就是这样一种环境:各方面的安全性都是由数组控制的。在沙箱里,你不可以绕过这个类型的规则来肆意破坏对象的状态。
作为你程序的一部分,也会来执行的。对于那些不再引用的对象,GC会把它们所占用的内存给收回去,所以内存分配的问题不需要程序员手动处理。
有时候特别需要性能,或者是互操作性的地方,还是可以使用指针的,也可以手动分配内存,这个时候会把那块代码使用unsafe来给标记起来
主要是指操作系统平台
·原来C#主要是在Windows上面运行:通过.net framework 运行在Windows上边
·现在可以在所有的平台上运行
·Windows
·Mac
·Linux
·iOS
·Android
·…
·.NET Core: 能运行在Linux和Mac上,主要归功于.NET Core
C#依赖于拥有某些特性的数组里边,具体这些数组需要哪些特性呢?比如说刚才说的自动内存管理,还有异常处理。
它就提供了刚才所提到的两个运行时的特性
·CLR和语言无关 ,不仅支持C#,还支持F#等。
CRL可以把中间语言IL转化为机器的原生语言。
而CRL什么时候把IL语言转化为机器原生代码呢?就是在刚刚执行操作之前
这种编译就叫做:·JIT(Just-In-Time)编译
当然呢,他也支持AOT编译,AOT编译可以提升启动速度
Assembly可以是exe或者是dll。exe就是可执行文件,dll是动态连接库
Assembly不仅仅包含IL,还包含类型信息,就是因为有类型信息的存在,Assembly之间呢,才可以相互引用。
微软在Windows上边有这么一个工具:lldasm。这个工具可以查看IL源,也就是生成的IL。
·NET Framework
·NET Core
·Unity
·Xamarin
·UWP
·WinRT
·Windows Phone
·XNA
·Sliverlight
·.NET Micro Framework
·Mono
·SQL Server:
我们是可以在微软SQL Server运行托管代码的。SQL Server可以和CLR集成。
**可以使用C#在里面写一些函数或者存储过程什么的,然后使用SQL语言来调用你写的这些函数或者存储过程。**但这个必须和.NET Framework完整的一起来用。
SQL Server里有一个特定数组的CLR,它会形成一个沙箱,它能保护SQL 进程的完整性
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。