智能温室远程监测系统设计外文翻译资料

 2022-10-31 02:10

C#编程语言概述

1.C,C 和C#的历史

C#编程语言是以C和C 编程语言的精神创建的。这说明它的强大的功能和容易的学习曲线。同样不能说C和C ,但是因为C#是从根本上创建的,微软自由地删除了一些更繁重的功能,如指针。本节将介绍C和C 语言,并将它们的演变跟踪到C#中。

C编程语言最初是为在UNIX操作系统上使用而设计的。 C用于创建许多UNIX应用程序,包括C编译器,最终用于编写UNIX本身。它在学术领域的广泛接受扩展到包括商业世界,和软件供应商如微软和Borland发布个人电脑的C编译器。原始的Windows API被设计为使用C语言编写的Windows代码,最新的一组核心Windows操作系统API仍然与C兼容。

从设计的角度来看,C缺乏其他语言如Smalltalk已经接受的细节:对象的概念。您将在第8章“编写面向对象的代码”中更多地了解对象。现在,将一个对象想象为一组数据和一组可以对该数据执行的操作。对象样式编码可以使用C完成,但是对象的概念不是由语言强制的。如果你想结构你的代码来类似一个对象,很好。如果你没有,罚款。 C真的不在乎。对象不是语言的固有部分,所以许多人没有注意这种编程范例。

在面向对象开发的概念开始获得认可后,很明显,C需要被改进,以拥抱这种新的思考代码的方式。 C 被创建来体现这个细化。它被设计为向后兼容C(所有C程序也将是C 程序,并可以用C 编译器编译)。对C 语言的主要补充是支持这个新的对象概念。 C 语言增加了对类(它是对象的“模板”)的支持,并且使得整个一代C程序员能够根据对象及其行为进行思考。

C 语言是对C的一个改进,但它仍然有一些缺点。 C和C 可能很难得到一个句柄。与易于使用的语言(如Visual Basic)不同,C和C 非常“低级”,需要你做大量的编码,使你的应用程序运行良好。你必须编写自己的代码来处理诸如内存管理和错误检查等问题。 C和C 可以产生非常强大的应用程序,但是您需要确保您的代码运行良好。一个错误可能使整个应用程序崩溃或意外行为。

由于C 设计目标是保持与C的向后兼容性,C 无法从C的低级性质中脱离。

微软设计C#来保留C和C 的大部分语法。熟悉这些语言的开发人员可以选择C#代码并相对快速地开始编码。 C#的最大优势是,它的设计师选择不向后兼容C和C 。虽然这可能看起来是一个坏的交易,这实际上是个好消息。 C#消除了使C和C 难以使用的东西。因为所有C代码也是C 代码,C 必须保留C中所有的原始怪癖和缺陷.C#始于一个干净的slate,没有任何兼容性要求,因此它可以保留其前辈的优势,并丢弃弱点这使得C和C 程序员难以生活。

2.介绍C#

C#是.NET Framework中引入的新语言,源自C 。但是,C#是一种现代的,面向对象的(从头开始)类型安全的语言。

语言特性

以下部分快速了解C#语言的一些功能。如果其中一些概念听起来不熟悉,不要担心。所有这些都在后面的章节中详细讨论。

C#中的所有代码和数据必须包含在类中。你不能在类之外定义一个变量,你不能写任何不在类中的代码。类可以有构造函数,当类的对象被创建时执行,析构函数在类的对象被销毁时执行。类支持单继承,所有类最终都派生自一个名为object的基类。 C#支持版本化技术来帮助您的类随着时间的推移而发展,同时保持与使用早期版本的代码的兼容性。

例如,看看一个名为Family的类。此类包含两个包含家庭成员的姓和名的静态字段,以及返回家庭成员的全名的方法。

class Class1

{

public string FirstName;

public string LastName;

public string FullName()

{

}}

return FirstName LastName;

}}

注:单继承意味着一个C#类只能继承一个基类。

C#使您能够将类分成一组称为命名空间的类。命名空间具有名称,并且可以帮助将类的集合组织成逻辑分组。当你开始学习C#时,很明显所有与.NET Framework相关的命名空间都以System开头。微软也选择了包括一些帮助向后兼容性和API访问的类。这些类包含在Microsoft命名空间中。

数据类型

C#允许您使用两种类型的数据:值类型和引用类型。值类型保存实际值。引用类型保存对存储在内存中其他位置的值的引用。原始类型(如char,int和float)以及枚举值和结构是值类型。引用类型保存处理对象和数组的变量。 C#带有预定义的引用类型(对象和字符串),以及预定义的值类型(sbyte,short,int,long,byte,ushort,uint,ulong,float,double,bool,char和decimal)。您还可以在代码中定义自己的值和引用类型。所有的值和引用类型最终派生自称为对象的基本类型。

C#允许将一种类型的值转换为另一种类型的值。您可以使用隐式转换和显式转换。隐式转换总是成功的,不会丢失任何信息(例如,您可以将int转换为long而不丢失任何数据,因为long大于int)。显式转换可能会导致您丢失数据(例如,将long转换为int可能会导致数据丢失,因为long可以容纳比int更大的值)。您必须在代码中编写一个转换运算符,以便进行显式转换。

交叉参考

参考第三章,“使用V隐式和显式的转换。你可以在C#中使用一维和多维数组。多维数组可以是矩形,其中每个数组具有相同的维度或锯齿状,其中每个阵列具有不同的尺寸。

类和结构可以具有称为属性和字段的数据成员。字段是与封闭类或结构相关联的变量。您可以定义一个名为Employee的结构,例如,具有名为Name的字段。如果您定义一个名为CurrentEmployee的Employee类型的变量,则可以通过编写CurrentEmployee.Name来检索员工的名称。属性类似于字段,但允许您编写代码以指定代码访问值时应发生的情况。例如,如果必须从数据库读取员工的姓名,则可以编写代码,说明“当有人请求Name属性的值时,从数据库中读取名称并以字符串形式返回名称。

函数

函数是一个可调用的代码片段,可能或可能不会将值返回到最初调用它的代码。函数的一个示例是FullName函数,如前所示,在本章的Family类中。函数通常与返回信息的代码段相关联,而方法通常不返回信息。然而,对于我们的目的,我们概括和引用它们作为函数。

函数可以有四种参数:

bull;输入参数具有发送到函数中的值,但函数无法更改这些值。

bull;输出参数发送到函数时没有值,但函数可以为它们提供一个值,并将值发送回调用者。

bull;引用参数将引用传递给另一个值。它们有一个值进入函数,并且该值可以在函数内部改变。

bull;参数定义列表中变量的参数个数。

C#和CLR一起工作,提供自动内存管理。你不需要编写说“为整数分配足够的内存”或“释放该对象使用的内存”的代码。 CLR监视您的内存使用情况,并在需要时自动检索更多内容。它还会在检测到不再使用内存时自动释放内存(这也称为垃圾收集)。

C#提供了各种运算符,使您能够写入数学和按位表达式。许多(但不是全部)这些运算符可以重新定义,使您能够更改运算符的工作方式。

C#支持一长串语句,使您能够在代码中定义各种执行路径。使用关键字(如if,switch,while,for,break和continue)的流控制语句使您的代码分支到不同的路径,具体取决于变量的值。

类可以包含代码和数据。每个类成员都有一个称为辅助功能范围的东西,它定义了成员对其他对象的可见性。 C#支持公共,受保护,内部,受保护的内部和专用访问范围。

变量

变量可以定义为常量。常量具有在执行代码期间不能更改的值。例如,pi的值是常量的一个很好的例子,因为它的值不会随着你的代码运行而改变。枚举类型声明为相关的常量组指定类型名称。例如,您可以使用Mercury的值定义行星的枚举,V在代码中定义这些名称。使用代码中的枚举名称使代码比如果使用数字表示每个行星更可读。

C#提供了一个内置的机制来定义和处理事件。如果编写一个执行冗长操作的类,则可能需要在操作完成时调用事件。客户端可以订阅该事件并在其代码中捕获事件,这样,当您完成冗长的操作时,可以通知它们。 C#中的事件处理机制使用委托,它们是引用函数的变量。

注意事件处理程序是代码中的一个过程,用于确定在事件发生时要执行的操作,例如用户单击按钮。

如果你的类拥有一组值,客户端可能想访问这些值,就像你的类是一个数组一样。您可以编写一段称为索引器的代码,以使您的类可以像数组一样访问。假设你写一个名为Rainbow的类,例如,它包含彩虹中的一组颜色。调用者可能想编写MyRainbow [0]来检索彩虹中的第一种颜色。你可以在Rainbow类中编写一个索引器来定义当调用者访问你的类时应该返回什么,就好像它是一个值数组。

接口

C#支持接口,这些接口是指定一组功能的属性,方法和事件组。 C#类可以实现接口,它告诉用户该类支持由接口记录的一组功能。您可以开发接口的实现,而不会干扰任何现有代码,从而最大限度地减少兼容性问题。一旦一个接口被发布,它不能被改变,但它可以通过继承演变。 C#类可以实现许多接口,尽管类只能从单个基类继承。

让我们看看一个真实世界的例子,它将从接口中获益,以说明其在C#中的极其积极的作用。目前许多应用程序支持加载项。假设您已经创建了用于编写应用程序的代码编辑器。此代码编辑器在执行时,能够加载加载项。为此,加载项必须遵循几个规则。 DLL加载项必须导出一个名为CEEntry的函数,并且DLL的名称必须以CEd开头。当我们运行我们的代码编辑器时,它会扫描其工作目录中所有以CEd开头的DLL。当它找到一个,它被加载;然后使用GetProcAddress来定位DLL中的CEEntry函数,从而验证您是否遵循了创建加载项所需的所有规则。这种创建和加载加载项的方法是非常繁重的,因为它给代码编辑器增加了比必要的更多的验证职责。如果在此实例中使用了接口,则您的加载项DLL可能已实现了一个接口,从而保证所有必需的方法,属性和事件与DLL本身一起存在,并且作为文档指定。

属性

属性向CLR声明有关您的类的附加信息。在过去,如果你想让你的类自我描述,你不得不采取断开连接的方法,其中文档存储在外部文件,如IDL甚至HTML文件。属性解决这个问题,通过使您,开发人员,绑定信息到类 - 任何类型的信息。例如,您可以使用属性将文档信息嵌入类中。属性还可以用于将运行时信息绑定到类,定义在使用时应如何操作。可能性是无穷无尽的,这就是为什么Microsoft包括许多在.NET框架中的预定义属性。

编译C#

通过C#编译器运行C#代码产生两个重要的信息:代码和元数据。以下部分描述这两个项目,然后通过检查.NET代码的二进制构建块来完成:程序集。

Microsoft中间语言(MSIL)

C#编译器输出的代码是用Microsoft中间语言(即MSIL)编写的。 MSIL由一组特定的限制组成,这些限制指定应如何执行代码。它包含诸如变量初始化,调用对象方法和错误处理等操作的指令,这里仅举几个例子。 C#不是在编译过程中源代码更改为MSIL的唯一语言。所有.NET兼容语言(包括Visual Basic .NET和Managed C )在编译其源代码时都会生成MSIL。因为所有的.NET语言都编译为相同的MSIL指令集,并且因为所有的.NET语言使用相同的运行时,不同语言和不同编译器的代码可以很容易地协同工作。

MSIL不是物理CPU的特定指令集。它不了解你的机器中的CPU,并且你的机器什么也不知道MSIL。那么,你的.NET代码如何运行,如果你的CPU不能读MSIL?答案是,当代码第一次运行时,MSIL代码将变成特定于CPU的代码。此过程称为“即时”编译或JIT。 JIT编译器的工作是将通用MSIL代码转换为可由CPU执行的机器代码。

你可能想知道什么似乎是一个额外的步骤的过程。为什么生成MSIL时编译器可以直接生成特定于CPU的代码?毕竟,编译器在过去总是这样做的。这有几个原因。首先,MSIL使您的编译代码可以轻松移动到不同的硬件。假设你写了一些C#代码,并且希望它在桌面和手持设备上运行。这两个设备很可能具有不同类型的CPU。如果你只有一个C#编译器针对一个特定的CPU,那么你需要两个C#编译器:一个针对你的桌面CPU和另一个针对你的掌上电脑。你必须编译代码两次,确保你把正确的代码放在正确的设备上。使用MSIL,可以编译一次。在桌面计算机上安装.NET Framework包括一个JIT编译器,它将MSIL转换为适用于您桌面的特定于CPU的代码。在掌上电脑上安装.NET Framework包括一个JIT编译器,它将同一M

剩余内容已隐藏,支付完成后下载完整资料


C# Programming Language Overview

A History of C, C , and C#

The C# programming language was created in the spirit of the C and C programming languages. This accounts for its powerful features and easy learning curve. The same cant be said for C and C , but because C# was created from the ground up, Microsoft took the liberty of removing some of the more burdensome features — such as pointers. This section takes a look at the C and C languages, tracing their evolution into C#.

The C programming language was originally designed for use on the UNIX operating system. C was used to create many UNIX applications, including a C compiler, and was eventually used to write UNIX itself. Its widespread acceptance in the academic arena expanded to include the commercial world, and software vendors such as Microsoft and Borland released C compilers for personal computers. The original Windows API was designed to work with Windows code written in C, and the latest set of the core Windows operating system APIs remain compatible with C to this day.

From a design standpoint, C lacked a detail that other languages such as Smalltalk had already embraced: the concept of an object. Youll learn more about objects in Chapter 8, ' Writing Object-Oriented Code.' For now, think of an object as a collection of data and a set of operations that can be performed on that data. Object-style coding could be accomplished using C, but the notion of an object was not enforced by the language. If you wanted to structure your code to resemble an object, fine. If you didnt, fine. C really didnt care. Objects werent an inherent part of the language, so many people didnt pay much attention to this programming paradigm.

After the notion of object-oriented development began to gain acceptance, it became clear that C needed to be refined to embrace this new way of thinking about code. C was created to embody this refinement. It was designed to be backwardly compatible with C (such that all C programs would also be C programs and could be compiled with a C compiler). The major addition to the C language was support for this new object concept. The C language added support for classes (which are 'templates' of objects), and enabled an entire generation of C programmers to think in terms of objects and their behavior.

The C language is an improvement over C, but it still has some disadvantages. C and C can be hard to get a handle on. Unlike easy-to-use languages like Visual Basic, C and C are very 'low level' and require you to do a lot of coding to make your application run well. You have to write your own code to handle issues such as memory management and error checking. C and C can result in very powerful applications, but you need to ensure that your code works well. One bug can make the entire application crash or behave unexpectedly.

Because of the C design goal of retaining backward compatibility with C, C was unable to break away from the low level nature of C.

Microsoft designed C# to retain much of the syntax of C and C . Developers who are familiar with those languages can pick up C# code and begin coding relatively quickly. The big advantage to C#, however, is that its designers chose not to make it backwardly compatible with C and C . While this may seem like a bad deal, its actually good news. C# eliminates the things that makes C and C difficult to work with. Because all C code is also C code, C had to retain all of the original quirks and deficiencies found in C. C# is starting with a clean slate and without any compatibility requirements, so it can retain the strengths of its predecessors and discard the weaknesses that made life hard for C and C programmers.

Introducing C#

C#, the new language introduced in the .NET Framework, is derived from C . However, C# is a modern, objected-oriented (from the ground up) type-safe language.

Language features

The following sections take a quick look at some of the features of the C# language. If some of these concepts dont sound familiar to you, dont worry. All of them are covered in detail in later chapters.

Classes

All code and data in C# must be enclosed in a class. You cant define a variable outside of a class, and you cant write any code thats not in a class. Classes can have constructors, which execute when an object of the class is created, and a destructor, which executes when an object of the class is destroyed. Classes support single inheritance, and all classes ultimately derive from a base class called object. C# supports versioning techniques to help your classes evolve over time while maintaining compatibility with code that uses earlier versions of your classes.

As an example, take a look at a class called Family. This class contains the two static fields that hold the first and last name of a family member as well as a method that returns the full name of the family member.

class Class1

{

public string FirstName;

public string LastName;

public string FullName()

{

}

return FirstName LastName;

}

Note Single inheritance means that a C# class can inherit from only one base class. C# enables you to group your classes into a collection of classes called a namespace. Namespaces have names, and can help organize collections of classes into logical groupings. As you begin to learn C#, it becomes apparent that all namespaces relevant to the .NET Framework begin with System. Microsoft has also chosen to include some classes that aid in backwards compatibility and API access. These classes are contained within the Microsoft namespace.

Data types

C# lets you work with two types of data: value types and reference types. Value types hold actual values. Reference types hold references to values stored elsewhere in

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[141598],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。