由于公司的需要,需要对C#程序设计语言进行学习。本来想着C#跟Java差不多也不想花多大时间在他身上。不过今天看了一些老师的视频才知道too yong too simple。任何人任何事情都有我们值得学习的地方。我们用惯了集成环境,当使用命令行编译的时候别有一番风味。
首先最简单的我们根据国际标准实现helloworld程序,文件名是Hello.cs
class Hello
{
static void Main()
{
System.Console.WriteLine("Hello World!");
}
}
(当然编译这个源文件之前我们必须安装了.NET框架。我使用的是.NET4.0)
我的C# 编译器的路径是在 C:\Windows\Microsoft.NET\Framework\v4.0.30319
里面有一个叫做csc.exe 的可执行文件就是我们需要的编译器。我把当前路径追加到系统path变量,然后就可以在命令行随时调用这个程序了。
首先切换到工作目录,通过命令
csc Hello.cs
编译源文件。然后得到可执行文件Hello.exe,在命令行上运行得到如下结果。
F:\C#LanguageReferenceDemo>Hello.exe
Hello World!
当然这只是第一步。
另外视频告诉我觉得比较有趣的是把源文件编译成dll库。首先我设置两个文件一个叫Namespacetest.cs 另一个叫Namespacetestsub.cs
他们的源代码分别是
//Namespacetest.cs源代码
using System;
namespace CG
{
class Test
{
static void Main()
{
PrintName a = newPrintName();
a.intro();
}
}
}
//Namespacetestsub.cs源代码
using System;
namespace CG
{
public class PrintName
{
public void intro()
{
Console.WriteLine("Mymname is lanzhiheng");
}
}
}
可以看到一个是有Main方法的程序,另一个文件只有一个类。我们要通过主方法来调用另一个文件中的intro方法打印一段字符串,由于使用同一个命名空间的关系,所以我们
不需要再Main方法里面导入一个命名空间,这也是命名空间的好处,方便管理。
我们有两种方法可以编译并运行着两个文件。
1.两个文件同时编译
csc Namespacetest.csNamespacesubtest.cs
我们就可以得到一个可执行文件Namespacetest.exe(可能是因为Main方法在Namespacetest.cs里面吧)
运行得到:
Mymname is lanzhiheng
2.这种方法比较有趣,我们可以把含有需要调用方法的类的那个文件编译成dll库
通过命令csc /target:libraryNamespacetestsub.cs
查看本目录下有一个dll文件,文件名为Namespacetestsub.dll
然后我们再编译源程序,用这个dll文件作为参考
csc /reference:namespacetestsub.dll Namespacetest.cs
得到可执行文件运行后得到一样的结果
Mymname is lanzhiheng
现在来说明一下dll文件的好处。我们把要打印的字符串修改成。“dll is good!”
我们把该文件重新编译
csc /target:libraryNamespacetestsub.cs
然后运行源程序
原来的字符串就变成
dll is good!
可见我们只需要修改参考的程序重新编译成dll就可以了,避免了整个软件的重新编译。这也方便了大型程序的维护,我们只需要修改有需要的部分,然后重新编译成库文件。主程序不需要做改动。只要更新了dll文件。然后系统更新后就可以用到新功能了。