二哥想要学编制程序

《叩开C#之门》种类之1

序言:堂弟想要学编程,作者引入他学习.Net和C#。那一推荐不打紧,笔者却担当上了指点的天职。小编又出差在外,直接引导是那一个了,通过邮件也太劳碌。推荐了几本书,可惜他太菜了,总有无从动手的以为。推及旁人,在初学C#时,是不是也可以有那样的认为吧?所以,就有了那么些种类小说。二哥是笔者把她指点Computer行当的,当初哪些都不懂,作者一度张开Computer机箱,辅导她哪个地方是硬盘、何地是内部存款和储蓄器,是CPU,今后对此Computer硬件他早已能够做作者师傅。希望学软件编制程序也能那样。

一、化解方案、项目、程序集、命名空间
初学者很轻巧把那一个概念搞混淆。先说说项目(Project),通俗的说,三个品类得以正是您付出的3个软件。在.Net下,3个门类可以显示为三种类型,如调控台应用程序,Windows应用程序,类库(Class
Library),Web应用程序,Web
Service,Windows控件等等。假设因而编写翻译,从扩张名来看,应用程序都会被编写翻译为.exe文件,而任何的会被编写翻译为.dll文件。既然是.exe文件,就注明它是足以被奉行的,表今后程序中,这一个应用程序都有二个主程序入口点,即方法Main()。而类库,Windows控件等,则未有这一个入口点,所以也无法一贯实践,而仅提供一些效益,给其它类型调用。

在Visual
Studio.Net中,可以在“File”菜单中,采用“new”3个“Project”,来创制2个新的类型。举例成立调整台应用程序。注目的在于此刻,Visual
Studio除了成立了3个调控台项目之外,该类型同期还属于一个消除方案(Solution)。那么些化解方案有哪些用?如若您只必要支付二个Hello
World的类型,消除方案自然不用用处。但是,多个稍微复杂一点的软件,都亟需过多模块来组成,为了反映互相之间的层系关系,利于程序的复用,往往供给三个项目,每种项目落实差异的机能,最终将这一个品种结合起来,就产生了一个完好无缺的缓慢解决方案。形象地说,解决方案正是三个容器,在那一个容器里,分成多数层,大多格,用来存放分化的门类。3个缓和方案与类型是过量等于的涉嫌。创建解决方案后,会创造三个扩展名称为.sln的文本。

在消除方案里增添项目,不能够再用“new”的措施,而是要在“File”菜单中,选取“Add
Project”。增加的体系,能够是新品类,也足以是现已存在的类型。

先后集叫Assembly。学术的定义笔者不想提,通俗的角度来讲,二个体系也正是2个顺序集。从规划的角度来讲,也足以看成是三个完好无缺的模块(Module),大概叫做是包(Package)。因而,1个主次集也能够反映为二个dll文件,可能exe文件。怎样划分程序集也是满眼的,不过初学者一时半刻不用思考它。

命名空间(namespace)是在C++里面就有的概念。引进它,首倘若为着幸免一个体系中,大概会设有的等同对象名的争论。那些命名空间的定义,未有卓绝的渴求。但是许多来讲,为了确认保证其唯1性,最棒是用uri的格式,比方BruceZhang.com。那个命名空间有一点像我们姓名中的姓,然后每种对象的名字则是真名中的名。假如有再度,再海外的命名中,还足以增多middle
name。那么名都为勇的,由于姓氏分裂也就分开了,可能叫张勇,恐怕叫赵勇。当然人的姓氏重复者居多,所以大家为命名空间取名时,尽大概的错综复杂一点。

有成都百货上千初学者,平常把三个连串就精通为3个命名空间。其实那两个未有断然的联系,在项目里大家也足以定义繁多不均等的命名空间。但为了用户便于使用,最棒在3个品类中,其命名空间然而是紧凑的档次结构。在Visual
Studio里,大家得以在项目中新建3个文书夹,默许意况下,该公文夹下对象的命名空间,应该是“项指标命名空间.文件夹名”。当然,大家也得以在namespace中修改它。

取名空间和程序集名,都足以在Visual
Studio中安装。用鼠标右键单击项目名,就能够弹出如下对话框:
 

bet36在线备用 1

在图中,Assembly
Name正是先后集名,假设由此编写翻译,则为该类型的公文名。而Default
Namespace则为私下认可的命名空间。在开荒软件时,大家要养成优异的习贯,在确立新品类后,就将这个属性设置好。一旦设置好了Default
Namespace,则未来新建的对象,其命名空间即为该设定的值。至于程序集名,假若是dll文件,提议其名最棒与Default
Namespace壹致。

实例演习:
(壹)创制调节台应用程序“Hello World!”
1、打开Visual Studio.Net,选择“File”菜单的“new”,选择“Project”;
2、选择Visual C# Projects中的“Console Application”,如图所示:
 

bet36在线备用 2

在Location中,定位你要保留的门类的门路,而名字则为“FirstExample”。该名字此时既是杀鸡取蛋方案的名字,同期也是该类型的名字。
三、用鼠标右键单击项目名,在弹出的对话框中,将Assembly
Name命名叫HelloWorld,将Default
Namespace命名字为:BruceZhang.com.FirstExample。
bet36在线备用,四、此时Visual Studio中曾经创建了多个文书,其名叫Class壹.cs(假如是Visual
Studio
200五,则默以为Program.cs);修改该公文的文本名称叫HelloWorld.cs,同一时间修改文件中的namespace,和类名,如下:
namespace BruceZhang.com.FirstExample
{
 /// <summary>
 /// Summary description for Class1.
 /// </summary>
 class HelloWorld
 {
  /// <summary>
  /// The main entry point for the application.
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   //
   // TODO: Add code to start application here
   //
  }
 }
}
五、注意在HelloWorld.cs中,有2个Main()方法。那是因为我们成立的是调控台应用程序。在Main()方法中增加如下代码:
Console.WriteLine(“Hello World!”);
Console.Read();
此间的Console是3个能对调节台进行操作的类。
6、运行。
反省保存项目的路子文件夹FirstExample/bin/debug,已经存在了三个HelloWorld.exe文件。

(二)为消除方案加多一个新类型
一、在“File”菜单中,选用“Add Project”,加多“New
Project”。在对话框中甄选“Class
Library”,名称叫Printer。至于保存路径,能够投身在此之前建设构造的FirstExample文件夹下:

bet36在线备用 3

二、在Visual
Studio左侧,能够看看今日有五个品类了。还是修改新品类的名目和暗中认可命名空间名,均为布鲁斯Zhang.com.Printer。
3、将暗中同意创建的Class壹.cs更名称叫MessagePrinter.cs,同有的时候候修改其代码为:
namespace BruceZhang.com.Printer
{
 /// <summary>
 /// Summary description for Class1.
 /// </summary>
 public class MessagePrinter
 {
  public MessagePrinter()
  {
   //
   // TODO: Add constructor logic here
   //
  }

  public static void Print(string msg)
  {
   Console.WriteLine(msg);
  }
 }
}
在MessagePrinter类中,大家注意到并不曾Main()方法,因为它不是应用程序。新扩大的Print()方法,能够摄取叁个字符串,然后在调控台北显得出来。
四、编译Printer项目。鼠标右键单击该类型名,在菜单中选拔“Build”。成功编译后,找到文件夹Printer/bin/debug,能够开掘有文件BruceZhang.com.Printer.dll,那正是最后形成的顺序集文件。
5、关联那多少个品种。我们愿意是在FirstExample项目中用到Printer项目标Print()方法,前提是内需在FirstExample项目中增加对Printer项目的引用。右键单击FirstExample项指标“Reference”,采纳“Add
Reference”,在对话框中甄选“Project”标签,找到该品种并当选,最终如图所示:

bet36在线备用 4

 
陆、今后就足以在FirstExample项目中使用MessagePrinter了。首先,在命名空间中加多对它的应用(Using),然后再Main()方法中调用它,最终代码如下:
using System;
using BruceZhang.com.Printer;

namespace BruceZhang.com.FirstExample
{
 /// <summary>
 /// Summary description for Class1.
 /// </summary>
 class HelloWorld
 {
  /// <summary>
  /// The main entry point for the application.
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   MessagePrinter.Print(“Hello World!”);
   Console.Read();
  }
 }
}
7、运营。结果与前2个例证同样。

在这一个事例中,消除方案中就带有了多少个项目,三个是调控台应用程序,二个是类库。类库提供部分中坚的魔法,如例子中的Print()方法。大家平常把部分共用的方法,放到类库中。那样任何的应用程序就足以去调用它。比如本例的调整台应用程序。若是新建的Windows应用程序,也须要以此功效,就足以平昔引用MessagePrinter的Print()方法,而不要再次去落到实处。

相关文章