C#程序结构

[原文参考官方教程]

https://docs.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/program-structure

C#中的关键组织结构包括程序,命名空间,类型,成员和程序集

以下示例在 Acme.Collections 命名空间中声明 Stack 类:

using System;
namespace Acme.Collections
{
public class Stack
{
Entry top;
public void Push(object data)
{
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;
public object data;
public Entry(Entry next, object data)
{
this.next = next;
this.data = data;
}
}
}
}

C#编译打包的程序集包括可执行程序和库,扩展名为.exe和.dll

编译成程序的语句,前提是包含main函数的程序,该实例为一个栈的实现程序,不包含main函数,只能编译为库文件
命令行窗口执行:

csc acme.cs

编译成库文件
命令行窗口执行:

csc /t:library acme.cs

创建一个使用acme.ll程序集的Acme.Collections.Stack类的程序:

using System;
using Acme.Collections;
class Example
{
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());
}
}

编译Example.cs程序文件并使用acme.dll程序集:
命令行窗口执行:

csc /r:acme.dll example.cs

编译后生成Example.exe可执行文件,运行输出:

100
10
1

!!实际运行会因为执行过快,命令框会一闪而过

使用 C#,可以将程序的源文本存储在多个源文件中。 编译多文件 C# 程序时,可以将所有源文件一起处理,并且源文件可以随意相互引用。从概念上讲,就像是所有源文件在处理前被集中到一个大文件中一样。 在 C# 中,永远都不需要使用前向声明,因为声明顺序无关紧要(除了极少数的例外情况)。 C# 并不限制源文件只能声明一种公共类型,也不要求源文件的文件名必须与其中声明的类型相匹配。

前向声明是C++的一种文件引用方式,用于解决文件之间相互引用的问题

最新文章

  1. 推荐几款API文档集合工具
  2. GL_INVALID_VALUE(0X501)
  3. 判断数组中有没有某个键 isset 和 array_key_exists 的效率比较
  4. 初涉JavaScript模式 (8) : 函数 【概述】
  5. vs2013 cpu占用100%问题
  6. 修改SQL Server 排序规则 (未能排它地锁定数据库以执行该操作)
  7. Codeforces 376B. Coupons and Discounts
  8. vue-05-webpack安装-vue单文件启动
  9. centos中文语言安装
  10. [转]让linux的coredump文件
  11. python网络爬虫 - 设定重试次数内反复抓取
  12. Android Service GetSystemService
  13. CodeForces - 669D Little Artem and Dance 想法题 多余操作
  14. ubuntu wifi连接不上或经常断网,重启就好 [ 转]
  15. Redis的认识和基本操作
  16. Objective-C 与命名空间
  17. java算法----------二叉树的遍历
  18. .htaccess详解及.htaccess参数说明
  19. 音视频技术 即时通讯SDK
  20. C++面向对象高级编程(三)基础篇

热门文章

  1. mysql 创建主键,修改主键
  2. EasyEarth三维可视化解决方案——智慧河长
  3. 改进欧拉公式求解常微分方程(c++)
  4. 欢迎来到地狱 WriteUp(2019暑假CTF第一周misc)
  5. winrunner 测试工具
  6. 【转】Jupyter Notebook主题字体设置及自动代码补全
  7. ISO/IEC 9899:2011 条款1——范围
  8. 【翻译】Flink Table Api & SQL —Streaming 概念 ——动态表
  9. clipboard 在 vue 项目中,on 事件监听回调多次执行
  10. 【SSH进阶之路】Spring的IOC逐层深入——源码解析之IoC的根本BeanFactory(五)