VisualC#NET入门.docx

上传人:b****4 文档编号:12038116 上传时间:2023-04-16 格式:DOCX 页数:26 大小:163.40KB
下载 相关 举报
VisualC#NET入门.docx_第1页
第1页 / 共26页
VisualC#NET入门.docx_第2页
第2页 / 共26页
VisualC#NET入门.docx_第3页
第3页 / 共26页
VisualC#NET入门.docx_第4页
第4页 / 共26页
VisualC#NET入门.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

VisualC#NET入门.docx

《VisualC#NET入门.docx》由会员分享,可在线阅读,更多相关《VisualC#NET入门.docx(26页珍藏版)》请在冰豆网上搜索。

VisualC#NET入门.docx

VisualC#NET入门

VisualC#.NET入门

摘要:

VisualC#.NET入门

VisualC#.NET入门

摘要:

VisualC#.NET是功能强大的编程语言VisualStudio套件的最新成员。

VisualC#.NET入门指南通过实现一个简单的QuickSort算法,带您领略如何构建VisualC#.NET项目。

本页内容

简介

步骤1.开始项目

步骤2.Hello,World!

步骤3.程序结构

步骤4.控制台输入

步骤5.使用数组

步骤6.文件输入/输出

步骤7.创建函数

步骤8.使用调试器

小结

补遗:

QuickSortC#.NET的源代码

补遗:

关于QuickSortC#.NET

简介

VisualC#.NET是VisualStudio系列中的最新成员。

这种新语言基于C/C++,但它深化了更容易地使用面向组件编程的发展方向。

C/C++程序员应该非常熟悉它的语法。

下面的示例应用程序示范了如何构建一个简单的实现QuickSort算法的C#项目。

它包括了C#程序的基本组成部分:

读/写控制台和文件、创建函数和使用基本数组。

这些入门指南并不打算涵盖该编程语言的所有方面。

它们只是您探索这种语言的一个起点。

我们鼓励您按照本教程的说明执行,因为它包括了QuickSort应用程序的各个不同部分。

您还可以获得完整的源代码和项目文件。

建议的要求

编译此示例应用程序需要VisualStudio.NET(测试版2或更高版本)。

关于C/C++的知识是有帮助的但不是必需的。

步骤1.开始项目

VisualStudio中的开发工作以解决方案的形式进行组织,每个解决方案包含一个或多个项目。

在本教程中,我们创建的解决方案包含一个C#项目。

创建一个新项目

1.

在VisualStudio.NET环境中,从菜单中选择File|New|Project。

2.

在左侧选择VisualC#Projects,然后在右侧选择ConsoleApplication。

3.

指定项目的名称,然后输入创建项目的位置。

VisualStudio会自动创建项目目录。

4.

单击OK,那么现在就正式开始了!

VisualC#解决方案

VisualStudio.NET已经创建了含有一个简单VisualC#项目的解决方案。

该项目包含两个文件:

assemblyinfo.cs和class1.cs。

接下来的几步骤将讨论这些不同的文件以及如何编译该项目。

步骤2.Hello,World!

很遗憾,但我们仍然无法抵御这种诱惑……我们还是不得不完成一个基于C#的经典"Hello,World!

"应用程序,这个应用程序最初是用C语言编写的。

修改源代码

1.

在SolutionExplorer中双击文件"class1.cs"。

可以通过"View"菜单来显示SolutionExplorer。

2.

更改预生成的模板(class1.cs),如下面以斜体突出显示的代码所示。

usingSystem;

namespacequicksort

{

///

///SummarydescriptionforClass1.

///

classClass1

{

staticvoidMain(string[]args)

{

//

//TODO:

Addcodetostartapplicationhere

//

Console.WriteLine("Hello,C#.NETWorld!

");

}

}

}

3.

注意,当您键入代码时,VisualStudio将为您提示类和函数的名称(因为.NET框架发布了这种类型信息)。

编译应用程序

1.

既然您已经完成了修改,就可以通过在Build菜单中简单地选择Build来编译VisualC#项目。

2.

来自C#编译器的错误和消息会在Output窗口中显示。

如果没有错误,则可以通过单击Debug菜单下的StartwithoutDebugging来运行HelloWorld应用程序。

程序输出

在VisualC#中运行HelloWorld示例应用程序时,输出结果的屏幕截图如下:

理解更改

System.Console类的WriteLine()函数打印传递给它的字符串,其后紧跟一行新的字符。

此函数可以接受许多其他数据类型(包括整型和浮点型)的参数。

在程序加载完成后,控制就传递给Main()函数。

这就是我们在该过程中插入对WriteLine()调用的原因。

步骤3.程序结构

既然我们已经构建了一个简单的HelloWorld应用程序,那么就让我们停下来分析一下VisualC#应用程序的基本组成部分。

源代码注释

字符//将行的剩余部分标记为一个注释,这样C#编译器就会忽略它。

另外,/*和*/之间的代码也会被当作注释。

//Thislineisignoredbythecompiler.

/*Thisblockoftextisalso

ignoredbytheVisualC#compiler.*/

Using指令

.NET框架为开发人员提供了许多有用的类。

例如,Console类处理对控制台窗口的输入和输出。

这些类是按照层次树的形式组织的。

Console类的完全限定名实际上是System.Console。

其他的类包括System.IO.FileStream和System.Collections.Queue。

using指令允许您在不使用完全限定名的情况下引用命名空间中的类。

以斜体突出显示的代码应用了using指令。

usingSystem;

classClass1

{

staticvoidMain(string[]args)

{

System.Console.WriteLine("Hello,C#.NETWorld!

");

Console.WriteLine("Hello,C#.NETWorld!

");

}

}

类声明

与C++或VisualBasic不同,VisualC#中的所有函数都必须封装在一个类中。

class语句声明一个新的C#类。

就HelloWorld应用程序来说,Class1类包含一个函数,即Main()函数。

如果用一个namespace块将类的定义括起来,就可以把类组织为诸如MsdnAA.QuickSortApp这样的层次。

在本入门指南中,我们并不打算深入地介绍类,但是我们将为您简要概述为什么类是我们的示例应用程序的一部分。

Main()函数

在应用程序加载到内存之后,Main()函数就会接收控制,因此,应该将应用程序启动代码放在此函数中。

传递给程序的命令行参数存储在args字符串数组中。

步骤4.控制台输入

现在,我们将继续编写QuickSort应用程序。

我们需要做的第一件事就是提示用户提供输入和输出文件。

修改源代码

更改C#源文件(class1.cs),如下面以斜体突出显示的代码所示。

其他的差异(如类名)可忽略不计。

//Importnamespaces

usingSystem;

//Declarenamespace

namespaceMsdnAA

{

//Declareapplicationclass

classQuickSortApp

{

//Applicationinitialization

staticvoidMain(string[]szArgs)

{

//Describeprogramfunction

Console.WriteLine("QuickSortC#.NETSampleApplication\n");

//Promptuserforfilenames

Console.Write("Source:

");

stringszSrcFile=Console.ReadLine();

Console.Write("Output:

");

stringszDestFile=Console.ReadLine();

}

}

}

从控制台进行读取

Console类的ReadLine()方法提示用户输入,并返回输入的字符串。

它会自动地为字符串处理内存分配,由于使用了.NET垃圾回收器,您不需要做任何释放内存的工作。

程序输出

从菜单中选择Debug|StartWithoutDebugging来运行程序。

这是到此为止来自QuickSort应用程序的输出的屏幕截图。

步骤5.使用数组

在对从输入读取的行进行排序之前,程序需要将其存储到一个数组中。

我们将简要讨论可实现对象数组的.NET基类的用法。

修改源代码

更改C#源文件(class1.cs),如下面以斜体突出显示的代码所示。

其他的差异(如类名)可忽略不计。

//Importnamespaces

usingSystem;

usingSystem.Collections;

//Declarenamespace

namespaceMsdnAA

{

//Declareapplicationclass

classQuickSortApp

{

//Applicationinitialization

staticvoidMain(string[]szArgs)

{

//Describeprogramfunction

Console.WriteLine("QuickSortC#.NETSampleApplication\n");

//Promptuserforfilenames

Console.Write("Source:

");

stringszSrcFile=Console.ReadLine();

Console.Write("Output:

");

stringszDestFile=Console.ReadLine();

//TODO:

Readcontentsofsourcefile

ArrayListszContents=newArrayList();

}

}

}

使用ArrayList类

我们将导入System.Collections命名空间,这样我们就可以直接引用ArrayList。

此类实现大小可动态调整的对象数组。

要插入新的元素,可以简单地将对象传递到ArrayList类的Add()方法。

新的数组元素将引用原始的对象,而垃圾回收器将处理它的释放。

stringszElement="insert-me";

ArrayListszArray=newArrayList();

szArray.Add(szElement);

要检索现有的元素,请将所需元素的索引传递给Item()方法。

另外,作为一种简写形式,还可以使用方括号operator[],它实际上映射到Item()方法。

Console.WriteLine(szArray[2]);

Console.WriteLine(szArray.Item

(2));

ArrayList类中还有许多其他方法,但是插入和检索都是我们需要在此示例中使用的。

请查阅MSDN库以获得完整的参考指南。

步骤6.文件输入/输出

现在,让我们来实现读取输入文件和写入输出文件。

我们将每一行读取到一个字符串数组中,然后输出该字符串数组。

在下一步中,我们将使用QuickSort算法来对该数组进行排序。

修改源代码

更改C#源文件(class1.cs),如下面以斜体突出显示的代码所示。

其他的差异(如类名)可忽略不计。

//Importnamespaces

usingSystem;

usingSystem.Collections;

usingSystem.IO;

//Declarenamespace

namespaceMsdnAA

{

//Declareapplicationclass

classQuickSortApp

{

//Applicationinitialization

staticvoidMain(string[]szArgs)

{

.........

//Readcontentsofsourcefile

stringszSrcLine;

ArrayListszContents=newArrayList();

FileStreamfsInput=newFileStream(szSrcFile,FileMode.Open,

FileAccess.Read);

StreamReadersrInput=newStreamReader(fsInput);

while((szSrcLine=srInput.ReadLine())!

=null)

{

//Appendtoarray

szContents.Add(szSrcLine);

}

srInput.Close();

fsInput.Close();

//TODO:

PasstoQuickSortfunction

//Writesortedlines

FileStreamfsOutput=newFileStream(szDestFile,

FileMode.Create,FileAccess.Write);

StreamWritersrOutput=newStreamWriter(fsOutput);

for(intnIndex=0;nIndex

{

//Writelinetooutputfile

srOutput.WriteLine(szContents[nIndex]);

}

srOutput.Close();

fsOutput.Close();

//Reportprogramsuccess

Console.WriteLine("\nThesortedlineshavebeenwritten.\n\n");

}

}

}

从源文件进行读取

使用FileStream类打开源文件,然后加入StreamReader类,这样我们就可以使用它的ReadLine()方法了。

现在,我们调用ReadLine()方法,直到它返回null,这表示到达文件结尾。

在循环过程中,我们将读取的行存储到字符串数组中,然后关闭这两个对象。

写入输出文件

假设已经用QuickSort对字符串数组进行了排序,接下来要做的事情就是输出数组的内容。

按照同样的方式,我们将StreamWriter对象附加到FileStream对象上。

这使得我们可以使用WriteLine()方法,该方法能够很方便地模仿Console类的行为。

一旦遍历了数组,我们便可以象前面一样关闭这两个对象。

步骤7.创建函数

最后一步就是创建一个函数来在字符串数组中运行QuickSort。

我们将此函数放到应用程序类QuickSortApp之中。

修改源代码

更改C#源文件(class1.cs),如下面以斜体突出显示的代码所示。

其他的差异(如类名)可忽略不计。

//Importnamespaces

usingSystem;

usingSystem.Collections;

usingSystem.IO;

//Declarenamespace

namespaceMsdnAA

{

//Declareapplicationclass

classQuickSortApp

{

//Applicationinitialization

staticvoidMain(string[]szArgs)

{

.........

//PasstoQuickSortfunction

QuickSort(szContents,0,szContents.Count-1);

.........

}

//QuickSortimplementation

staticvoidQuickSort(ArrayListszArray,intnLower,intnUpper)

{

//Checkfornon-basecase

if(nLower

{

//Splitandsortpartitions

intnSplit=Partition(szArray,nLower,nUpper);

QuickSort(szArray,nLower,nSplit-1);

QuickSort(szArray,nSplit+1,nUpper);

}

}

//QuickSortpartitionimplementation

staticintPartition(ArrayListszArray,intnLower,intnUpper)

{

//Pivotwithfirstelement

intnLeft=nLower+1;

stringszPivot=(string)szArray[nLower];

intnRight=nUpper;

//Partitionarrayelements

stringszSwap;

while(nLeft<=nRight)

{

//Finditemoutofplace

while(nLeft<=nRight)

{

if(((string)szArray[nLeft]).CompareTo(szPivot)>0)

break;

nLeft=nLeft+1;

}

while(nLeft<=nRight)

{

if(((string)szArray[nRight]).CompareTo(szPivot)<=0)

break;

nRight=nRight-1;

}

//Swapvaluesifnecessary

if(nLeft

{

szSwap=(string)szArray[nLeft];

szArray[nLeft]=szArray[nRight];

szArray[nRight]=szSwap;

nLeft=nLeft+1;

nRight=nRight-1;

}

}

//Movepivotelement

szSwap=(string)szArray[nLower];

szArray[nLower]=szArray[nRight];

szArray[nRight]=szSwap;

returnnRight;

}

}

}

QuickSort()函数

这个函数需要三个参数:

对数组的引用、下界和上界。

它调用Partition()函数将数组分成两部分,其中一部分包含Pivot值之前的所有字符串,另一部分包含Pivot值之后的所有字符串。

然后,它调用自身来对每个部分进行排序。

上面修改中的注释应该说明了每个代码块的作用。

唯一的新概念就是CompareTo()方法的使用,该方法是String类的成员,并且应该是自说明的。

运行QuickSort应用程序

这一步完成QuickSortC#示例应用程序。

现在,可以构建项目并运行应用程序。

需要提供一个示例文本文件,以供其进行排序。

将该文件放在与EXE文件相同的目录中。

程序输出

下面是已完成的QuickSortC#.NET示例应用程序的输出。

可以查看示例输入文件'example.txt'和输出文件'output.txt'。

步骤8.使用调试器

调试器是诊断程序问题的一个必不可少的工具。

我们觉得有必要在本入门指南中对其进行介绍。

这最后一步将向您展示如何走查程序和使用诸如QuickWatch这样的功能。

设置断点

当程序在调试器中运行时,断点会暂停程序的执行,从而使开发人员能够控制调试器。

要设置断点,请右键单击您想要程序暂停的行,然后单击InsertBreakpoint,如下所示。

注:

带有断点的行以红色突出显示。

通过再次右键单击该行并选择RemoveBreakpoint可以删除断点。

单步调试程序

既然设置了断点(最好是在前面所示的行中),就让我们在调试器中运行程序。

在Debug菜单中,选择Start而不是同前面一样选择StartWithoutDebugging。

这样就在调试器中启动了程序,并因而激活了断点。

一旦程序遇到断点,调试器便会接收程序的控制。

这时会有一个箭头指向当前执行的行。

要单步调试一行代码,可以选择Debug|StepOver并观察光标是否移到下一行。

Debug|StepInto命令允许您单步执行将要调用的函数。

进行两次StepOver之后的屏幕如下所示。

如果想要程序在遇到下一个断点、遇到异常或退出之前继续执行,请从菜单中选择Debug|Continue。

检查变量值

当您可以控制调试器时,可将鼠标指针移到变量上以获得它的基本值。

您也可以右键单击变量,然后从上下文菜单中选择QuickWatch。

QuickWatch将为您提供关于某些变量(如ArrayList对象)的更多详细信息。

其他调试器工具

VisualStudio调试器具有许多其他工具(例如CallStack查看器)的功能,可以使用此调试器来查看到此为止调用的函数。

还可以获得内存转储和关于进程中线程的信息。

我们鼓励您使用这些功能强大的调试工具。

小结

本入门指南旨在帮助您用VisualStudio构建一个简单的C#项目。

它无法进行全面的介绍。

我们鼓励

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1