命令行下编译C#——csc

C#基础不扎实,今天开始从头看起!

首先在新建个记事本文件,命名为hello.cs,内部代码如下:

using System;

class Hello
{
static void Main()
{
Console.WriteLine("Hello, World");
Console.Out.WriteLine("Hello World");   //Console.WriteLine是Console.out.WriteLine的简写,
                                                                       //Console.out是一个属性,返回专门用于控制台输出的System.IO.TextWriter基类的实现
Console.ReadLine();
}
}


打开命令行,执行以下指令:


csc hello.cs


生成一个可执行文件hello.exe,执行程序的输出结构为

Hello,World


注意到知识点:

1.引用命名空间的作用:不加前缀的使用命名空间里的类型

例子:using指令可以把System.Console.WriteLine简写成Console.WriteLine.

2.实例方法可以通过关键字this来引用自身,静态方法在使用中却无需引用某个特定的对象。

例子:代码中的Main是静态方法,默认是程序的入口点。

3.C#本身无单独运行库,.NET框架就是C#的运行库(框架的类库提供类)。


其次,了解一下如何生成程序集文件

下面引用《C#程序设计语言》4.0书上的一个例子,

新建一个文本文件,命名为acme.cs,代码如下:

using System;


namespace Acme.Collections         //命名空间名
{
public class Stack            //声明类,此类名完整为 Acme.Collections.Stack
{
Entry top;               //声明变量top

public void Push(Object data)  //方法,实例化top
{
top=new Entry(top,data);
}

public Object Pop()    //方法
{
if(top==null) throw new InvalidOperationException();
Object result=top.data;
top=top.next;
return result;
}

class Entry   //嵌套类
{
public Entry next;   //变量next
public object data;  //变量data

public Entry(Entry next,object data)  //构造函数
{
this.next=next;
this.data=data;
}
}
}
}


同样打开命令行,执行一下语句

csc /t:library acme.cs

编译成一个类库(没有Mian入口点的代码)并生成一个汇编文件(程序集文件)acme.dll(类库).


注意点:

汇编文件包含了中间语言(Intermediate Language,IL)指令形式的可执行代码,执行之前,IL代码会被.NET公共语言运行库的即时编译器(JIT)转换成处理器相关的代码,便于执行。


最后,写一个测试文件,调用汇编类

using System;
using Acme.Collections;


class Test
{
static void Main()
{
Stack s=new Stack();
s.Push(1);
s.Push(10);
s.Push(100);

Console.WriteLine(s.Pop());
Console.WriteLine(s.Pop());
Console.WriteLine(s.Pop());

Console.ReadLine();
}
}

编译test.cs时,可以使用编译器的/r选项来应用acme.dll汇编:




这是生成一个可执行的汇编文件test.exe,它的输出如下:

命令行下编译C#——csc_第1张图片


你可能感兴趣的:(.net,汇编,C#,编译器,CSC)