如何学好C# 开篇浅论2

如何学好C# 开篇浅论<二>
上一章提到掌握六点学习C#的学习方法,今天就让我们通过实例来逐点分析:
          1. 多读代码,网上很多好的代码,不要为了实现功能而简单的复制+粘贴,"复制+粘贴"只要会操作电脑的都会,关键学会作者的思想(非常重要啊).
这一点相信很多人应该深有体会.说句实话,要做到真的很难.特别是长一点的程序,很少新手能有耐心从头看尾.究其原因不是不愿意看,可能也实在是看不懂.其实这一点真的没有关系.长些的看不懂就先看较为简单一些的.不过在看别人的程序之前,最好还是有些基础为好,我这里指的基础,是熟悉语法然后再来看程序.说到这里,让我们看一下下面的代码,这是一个本人在网上看到的一个使用计时器的例子:
//*************************************************************************
using System;
using System.Timers;
 
class testtimer
{
    public static void Main()
    {
        Timer timer = new Timer();
        timer.Elapsed += new ElapsedEventHandler( displaytimeevent );
        timer.Interval = 1000;
        timer.Start();
        timer.Enabled = true;
 
        while ( Console.Read() == 'q' )
        {
           timer.Stop();
        }
    }
 
    public static void displaytimeevent( object source, ElapsedEventArgs e )
    {
        Console.Write("/r{0}", DateTime.Now);
    }
}
//*************************************************************************
这个例子是比较简单一个程序了 . 初学者到看这段代码后会先迫不及待的先 copy 然后再 phase 运行 , 一旦运行通过 ( 一般都会通过 , 除了在字符在网页上到 VS 里面可能会出现空白的占位符 ) 便也不去深究了 . 我在这里提出一个方法 . 以供参考 :
第一步 : 这个 Timer 如果你是第一次看到就需要查 MSDN, 你会发现除了在 System.Timers 的命名空间下有 , System.Windows.Forms System.Threading.Timer 命名空间下面都有 , 在此我大概的介绍一下 :
System.Windows.Forms.Timer 是应用于 WinForm 中的,它是通过 Windows 消息机制实现的,类似于 VB Delphi 中的 Timer 控件,内部使用 API  SetTimer 实现的。它的缺点是计时不精确,而且必须有消息循环 .
System.Timers.Timer System.Threading.Timer 非常类似, .NET  Thread  Pool 实现的,轻量,计时精确,对应用程序、消息没有特别的要求。 System.Timers.Timer 还可以应用于 WinForm ,完全取代上面的 Timer 控件。它们的缺点是没有所见即所得的功能,需要手工编码。
第二步 : 明白意思后 . 这段代码对于你的作用基本上就发挥了 60% . 还有百分之四十是你的思考 . 有人会问这样一下简单的程序还有什么好思考的 ? 其实不然 , 它的功能无非也就是延时 , 这种设计方式虽然简单明了 , 但你可以不时的问一下还有没有别的什么办法可以替代它呢 ? 应该还有吧 ! 于是就出来了这段代码 . 大家可以看一下下面这段程序 :
 
//************************************************************************
using System;
using System.Threading;
 
class testtimer
{
    public static void Main()
    {
        Thread thread = new Thread(new ThreadStart(displaytimethread));
        thread.Start();
 
        if (Console.Read() == (int)('q'))
           thread.Abort();
      
    }
 
    public static void displaytimethread()
    {
        do
        {
            Console.Write("/r{0}", DateTime.Now);
        
            Thread.Sleep(1000);
        } while (true);
    }
}
//*************************************************************************
实现同样的功能却用了两种不同的方法.每个人写程序的风格都不一样.一个功能让一百个人去可能有一百种写法,你现在所需要的就是多尝试这些方法.然后从里面去找出一种最适合 自己 的或当前项目的.当然你更可以通过 System.Windows.Forms.Timer System.Threading.Timer 来实现相同的功能 . 这里我就不一一列举了 , 之所举这个例子是希望初学者一定要学会先思考后发问 , 遇事多靠自己来解决
         2. 多写代码 , 然后再不断的改进 .
如果只看不练也是没有用的 . 程序和其它学术类的东西不一样 , 实际的操作也非常重要 . 这里讲的多写不是乱写 , 是有组织的写一些代码 . 先可以按照第一点慢慢来 , 然后不断的改进 , 这一点在上一点已经讲过了 . 就是不断的通过迭代法去寻找一条最好的路 . 因为此时你跟本不知道哪条路最好 . 来看一下我为大家展现的一个简单例子 :
 
//*************************************************************************
 
class TestLoop
{
    public static void Main()
    {
        int num = Console.Read();
        int[] testArray = new int [100];
        for (int i = 0; i < 100; i++)
        {
            if (num < 10)
                testArray[i] = 100;
            else
                testArray[i] = 1000;
        }
    }
}
//*************************************************************************
 
很多人会问,这有什么问题吗?这是很多初学者写循环的方法.其实不然.这种方法虽然程序易读性会好一些,但是程序效率会比较低,让我们一起来看一下下面这段代码,当然它们做的是同一件事情.
 
//*************************************************************************
 
using System;
using System.Threading;
 
class TestLoop
{
    public static void Main()
    {
        int num = Console.Read();
        int[] testArray = new int [100];
        if (num < 10)
        {
            for (int i = 0; i < 100; i++)
            {
                  testArray[i] = 100;
            }
        }
        else
        {
            for (int i = 0; i < 100; i++)
            {
                testArray[i] = 1000;
            }
        }
    }
}
//*************************************************************************
这段代码可能可读性没有上一段的高,不过效率的确是要快一些,如果你不信的话,你可以把数字调大一些.效果会很更明显一些.所以从一个功能和问题延伸开来看同一件事情,你会发现真正的开发的乐趣.自然也就会乐在其中了.
( 未完待续…………………………………………………………………………………………)
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值