【那些年我们用过的C#系列讲座 1】命名空间和我们第一个C#程序

作者:shinoy

时间:2011/12/01 版权所有,侵权必究。

出处:http://blog.csdn.net/snowshinoy


本节示例代码下载: 示例代码


        .NET是微软继COM技术后推出的新一代开发平台。不同于COM,这次微软推出.NET平台的目的,是希望减轻开发人员的开发难度,并提高开发效率。所以,在.NET中,我们会发现有非常强大的类库支持以及新功能的引入。.NET较多的借鉴了JAVA的理念和技术,学习过JAVA的朋友会觉得很多概念似曾相识。本专题的目的就是带领大家逐步掌握.NET下编程的技术。


  一、.NET和CLR

         .NET不同于以往的windows开发平台,他是基于一个称为CLR(common language runtim)的虚拟机组件支持的平台。所有使用.NET语言编写的程序,在编译后都形成CIL(Common Intermediate Language) Code 。在运行时,CLR将CIL Code转换成Natvie Code运行。过程如下图:


通过这种方式,.NET实现了语言无关性以及反射等高级技术,在以后我们会感受到他的好处。


 二、C#和命名空间

        .NET支持了多种语言,使用最为广泛的就是C#(读作c sharp)。这是一种语法类似C++的新语言,并且是一个完全面向对象语言(C++可以写非面向对象)。就目前而言,我们如何理解完全面向对象呢?可以不很准确的通过C#的一个特点理解一下,就是所有东西都定于在类定义中,甚至包括Main函数。也就是说,在C#编程中的第一个事情,一定是先定义一个类。下面我们看一个例子:

class Program
{
     static void Main(string[] args)
    {
    }
}
        不管你信不信,这个已经是一个可以运行的C#程序了,在你的Visual Studio中敲入它,运行下试试。这个例子中,我们只有一个Main函数,说到它,有点编程经验的都应该不陌生,这是整个程序的入口,也就是说,程序是从这个函数开始进入运行的。在C和C++中,这个Main可是裸奔的,而在C#中,所有的东西都必须放入类定义中(关于什么是类和对象,可以参看我的另外一篇文章,里面有清楚描述 【Nunit入门系列讲座 4】NUnit断言- 对象识别断言)。这个例子里我们将Main放入了一个叫Program的类定义中。

        说到这里,有些想的比较深入的朋友可能有疑问,你可以随便定义类名么?不怕重复么?确实,类名重复就会出错。如果这个程序是同一个人写的,这点比较容易避免。但是大多数时候,程序是由多个人完成的,甚至不同程序互相调用的时候,类名也不能混淆。这就是命名空间派上用场的时候了。我们可以把命名空间想象成类名的前缀,通过不同的前缀,我们可以轻松的类名相同的类区分开来。这点和通过城市,街名的组合来唯一确定地址类似。

        我们为了防止别人也给自己的类起名为Program(这倒是很容易,因为VS默认类名就是这个),我们来加一个叫做My的命名空间,通过namespace关键字可以定义命名空间,包裹在namespace的括号中的所有类,都是属于My这个名字空间的。

namespace My
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

      现在我们再定义一个同名的类,位于另外一个名字空间Your中,并且在另外一个地方使用他们,看下会发生什么。

using System;
using System.IO;
namespace My
{
    class Program
    {
      public static int Member = 0;
        
    }
}

namespace Your
{
    class Program
    {
      public static int Member = 1;
    }
}

class Test
{
    static void Main(string[] args)
    {
        Console.WriteLine(My.Program.Member);
        Console.WriteLine(Your.Program.Member);
    }
}

       运行结果:


       从上例可知,我们通过命名空间,成功的调用了两个同名类的同名属性,而没有混淆。命名空间就是通过有意义的名字,将不同的类组织在不同逻辑集合中。.NET的类库中也广泛使用了这种方式来管理,不然成千上万个系统类,我们查找都会非常费时。


 三、我们的第一个程序

       其实在上节,我们已经完整的实现了一个C#程序。通过例子我们可以知道一个C#的程序组成很简单,一个类定义,一个Main入口(在类定义中)就可以。下面让我们也俗套一次,实现一个C# 版本的Hello World吧。给程序加上命名空间、调用系统库的引用(类似c中的include),形成如下的代码:

using System;
using System.IO;
namespace My
{
    class Program
    {
      public static int Member = 0;
        
    }
}
namespace Your
{
    class Program
    {
      public static int Member = 1;
    }
}
namespace TestNS
{
    class Test
    {
        static void Main(string[] args)
        {
            Console.WriteLine(My.Program.Member);
            Console.WriteLine(Your.Program.Member);
            Console.WriteLine("Hello World!");
        }
    }
}

       运行程序,这里的Console.WriteLine是定义于.NET类库中的API函数,我们可以把它当成printf,用来在Console输出信息。效果如下:


四、结语

       到此,我们初步学习了.NET平台下使用C#编程,后面我们将会逐步学习,接触更多让我们心动的特性。还是那句老话,如果觉得不错,请继续关注本系列课程,如果对课程有不理解的问题,可以发邮件给我28345697@qq.com,谢谢。



白盒测试QQ交流群:点击这里加入此群


 Rss订阅IQuickTest关于如何订阅?

GoogleReader订阅地址: http://feeds.feedburner.com/iquicktest


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值