如何学好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;
}
}
}
}
//*************************************************************************
这段代码可能可读性没有上一段的高,不过效率的确是要快一些,如果你不信的话,你可以把数字调大一些.效果会很更明显一些.所以从一个功能和问题延伸开来看同一件事情,你会发现真正的开发的乐趣.自然也就会乐在其中了.
(
未完待续…………………………………………………………………………………………)
转载请注明原文地址: https://ibbs.8miu.com/read-12184.html