欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
C Sharp
小 (→开源项目) |
小 (→开源项目) |
||
第81行: | 第81行: | ||
===C# 1=== | ===C# 1=== | ||
C# 1可以看作2001年Java语言的升级版。 | C# 1可以看作2001年Java语言的升级版。 | ||
+ | |||
+ | ==例子== | ||
+ | [https://github.com/Microsoft/Windows-universal-samples Universal Windows Platform (UWP) app samples] | ||
==开源项目== | ==开源项目== |
2016年8月20日 (六) 01:18的版本
您可以在Wikipedia上了解到此条目的英文信息 C Sharp Thanks, Wikipedia. |
C#是微软推出的一种基于.NET框架的、面向对象的高级编程语言。C#由C语言和C++派生而来,继承了其强大的性能,同时又以.NET 框架类库作为基础,拥有类似Visual Basic的快速开发能力。
C#中发音为C Sharp,其中“#”的创意来源于音乐中的升调符号“♯”,读作“sharp”(国际音标:/ʃɑ:p/),表示技术进一步提升之意。微软希望借助这种语言来取代Java。
C#已经成为Ecma国际和国际标准组织的标准规范。
DotGNU 是 GNU Freedom for the Net
.NET 的公共语言运行时(Common Language Runtime, CLR) 是作为动态链接库(DLL) 中的一个COM对象来实现的,它需要被载入到进程中,它需要使用线程来执行代码,它需要处理 Unicode 字符串,它需要在内存中对这些字符串进行管理。
目录 |
设计目标
ECMA标准列出的C#设计目标:
- C#旨在设计成为一种「简单、现代、通用」,以及面向对象的程序设计语言
- 此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(Garbage Collection,指一种自动内存释放技术)。软件必须做到强大、持久,并具有较强的编程生产力。
- 此种语言为在分布式环境中的开发提供适用的组件开发应用。
- 为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已熟悉C和C++的程序员而言。
- 对国际化的支持非常重要。
- C#适合为独立和嵌入式的系统编写程序,从使用复杂操作系统的大型系统到特定应用的小型系统均适用。
- 虽然C#程序在存储和操作能力需求方面具备经济性,但此种语言并不能在性能和尺寸方面与C语言或汇编语言相抗衡。
版本
C$ 7
C# 6
C# 5
C# 4
4.0主要增加了并行支持,英文版于2010年4月12日推出。
Microsoft .NET Framework 4 提供了以下新功能和改进:
公共语言运行时 (CLR) 和基类库 (BCL) 的改进
- 性能改进,包括更好的多核心支持、后台垃圾回收和服务器上的探查器附加。
- 新的内存映射文件和数字类型。
- 更轻松的调试,包括转储调试、Watson 小型转储、64 位的混合模式调试和代码协定。
- 有关 CLR 和 BCL 的增强功能的完整列表,请转到此处。
Visual Basic 和 C# 语言中的创新,例如 lambda 语句、隐式行继续符、动态调度和命名/可选参数。
数据访问和建模的改进
- 利用 Entity Framework,开发人员可使用 .NET 对象和语言集成查询 (LINQ) 对关系数据库进行编程。 它具有多项新功能,包括持久性忽略和 POCO 支持、外键关联、延迟加载、测试驱动开发支持、模型中的函数和新的 LINQ 运算符。 其他功能包括:带自跟踪实体的更好的 n 层支持、使用 T4 模板的可自定义的代码生成、模型首次开发、改进的设计器体验、更好的性能以及实体集的复数形式。有关更多信息,请转到此处。
- WCF 数据服务是 .NET Framework 的一个组件,可以利用此服务创建基于 REST 的服务和应用程序,以便使用开放式数据协议 (OData) 在 Web 上公开和使用数据。 WCF 数据服务具有多项新功能,包括增强的 BLOB 支持、数据绑定、行计数、源自定义、投影和请求管道改进。 当前与 Microsoft Office 2010 的内置集成可将 Microsoft Office SharePoint Server 数据作为一个 OData 源公开,并使用 WCF 数据服务客户端库访问该数据源。有关更多信息,请转到此处。
ASP.NET 的增强功能
- 对 HTML、元素 ID 和自定义 CSS 的更多控制,通过这些控制可更轻松地创建符合标准且 SEO 友好的 Web 窗体。
- 新的动态数据功能,包括新的查询筛选器、实体模板、对 Entity Framework 4 的更丰富的支持以及可轻松应用于现有 Web 窗体的验证和模板化功能。
- 针对新的 AJAX 库改进的 Web 窗体支持,包括对内容传递网络 (CDN) 的内置支持。
- 有关 ASP.NET 增强功能的完整列表,请转到此处。
Windows Presentation Foundation (WPF) 的改进
- 添加对 Windows 7 多点触控、功能区控件和任务栏扩展性功能的支持。
- 添加了对 Surface 2.0 SDK 的支持。
- 新的业务线控件,包括图表控件、智能编辑、数据网格以及其他用于改进生成以数据为中心的应用程序的开发人员体验的控件。
- 性能和伸缩性的改进。
- 文本清晰度、布局像素对齐、本地化和互操作性的可视化改进。
- 有关 WPF 的增强功能的完整列表,请转到此处。
Windows 工作流 (WF) 的改进,利用这些改进,开发人员能够更好地承载工作流并与其进行交互。 这些改进包括:改进的活动编程模型、改进的设计器体验、新的流程图建模样式、展开的活动面板、工作流规则集成和新的消息相关功能。 .NET Framework 4 还显著提高了基于 WF 的工作流的性能。 有关 WF 的增强功能的完整列表,请转到此处。
Windows Communication Foundation (WCF) 的改进,例如对 WCF 工作流服务的支持(可启用带消息传递活动的工作流程序)和相关支持。 此外,.NET Framework 4 还提供了新的 WCF 功能,如服务发现、路由服务、REST 支持、诊断和性能。 有关 WCF 的增强功能的完整列表,请转到此处。
创新的新并行编程功能,例如并行循环支持、任务并行库 (TPL)、并行 LINQ (PLINQ) 和协调数据结构(可让开发人员利用多核处理器)。
C# 3
这个版本将包含一个支持C#和VB.Net中心的语言特性的编译器,以及对语言集成查询(LINQ, Language-Integrated Query)的支持。该版本随Visual Studio 2008一起发布。
发布日期2006/11/21。曾用名“WinFX”。依然使用.NET框架 2.0版本的公共语言运行库(CLR),并加入了适应未来软件发展方向的4个框架:
- Windows Presentation Foundation(WPF):提供更佳的用户体验,用来开发Windows Forms程序以及流览器应用程序(参见WPF/E).
- Windows Communication Foundation(WCF):提供SOA(面向服务的软件构架)支持的安全的网络服务(Web Service)框架。
- Windows Workflow Foundation(WF):提供一个设计与发展工作流程导向(Workflow-oriented)应用程序基础支持的应用程序接口。
- Windows CardSpace:提供一个SSO的解决方案,每个用户都有各自的CardSpace。
C# 2
.NET框架 2.0的组件都包含在 Visual Studio 2005和SQL Server 2005里面。通过MSDN Universe版可以免费下载RTM版本。
C# 1
C# 1可以看作2001年Java语言的升级版。
例子
Universal Windows Platform (UWP) app samples
开源项目
- Awesome .NET
- nopCommerce
- mojoPortal ASP.NET
- DotNetNuke
- Umbraco
- OpenRasta
- Akka.NET
- Orleans - Distributed Actor model
- ClojureCLR A port of Clojure to the CLR, part of the Clojure project
- Nancy
- OmniSharp
- StackExchange @ GitHub
Python
在C#中调用Python
Calculator.py
class Calculator: def Add(self, a, b): return a + b def GetCalculator(): return Calculator()
C#代码
static void IronPython() { // http://ironpython.codeplex.com var engine = Python.CreateEngine(); dynamic scope = engine.ImportModule("Calculator"); var calc = scope.GetCalculator(); int r = calc.Add(2, 3); Console.WriteLine(r); }