问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C# 从控制台应用程序入门

创作时间:
作者:
@小白创作中心

C# 从控制台应用程序入门

引用
CSDN
1.
https://blog.csdn.net/qq_39847278/article/details/144570489

本文将带你从零开始学习C#编程语言的基础知识,特别是如何使用控制台应用程序进行入门学习。文章内容涵盖了从创建第一个控制台应用程序到理解C#的基本语法、注释、程序结构以及编译过程等核心概念。

一、新建一个控制台应用程序

控制台应用程序是C#入门时,学习基础语法的最佳应用程序。

  • 打开VS2022,选择【创建新项目】
  • 搜索【控制台】,选择控制台应用(.NET Framework) ,点击下一步
  • 配置新项目:输入项目名称 和位置,点击【创建】即可。
  • 创建完毕,得到如下项目结构和代码
static void Main(string[] args)
{
    Console.Write("Hello World");
}

点击运行按钮,运行程序

运行结果

好了,至此,你已经完成一个控制台应用程序,完美入门。

二、不要完美主义,带着疑问前进

你可能很好奇

Console.Write("Hello World");

这句代码的运行原理是什么?

甚至好奇

static void Main(string[] args)

是什么意思?

甚至好奇

Program.cs

这个文件有什么用?

初学阶段,不要过多的纠结于某一行代码的原理或意义(指太纠结于底层的实现原理),只需要记住,在

static void Main(string[] args)

的那对大括号

{ }

中输入

Console.Write("Hello World");

就可以在‘黑框框’内输出

Hello World

即可。学会带着疑问前进,随着代码瞧得多了,敲得多了,有些疑问也会在实践中得到答案。

三、C# 注释

注释:顾名思义就是注解,解释的意思,一般用于解释某一段代码的逻辑或作用。不参与代码的编译,对运行结果不产生影响。

  • C# 单行注释以 // 开头,持续到当前行的末尾。
static void Main(string[] args)
{
    // 这是一行注释
    Console.WriteLine("你好!");
}

运行结果只会打印出

你好!

,而不会将

//

后的内容进行输出

  • C# 还支持多行注释。 多行注释以

/*

开头,以

*/

结尾。

static void Main(string[] args)
{
    /*
     这是多行注释
     可以一次性注释多行             
     */
    Console.WriteLine("你好!");
}

运行结果只会打印出

你好!

,而不会将

/**/

内的内容进行输出

四、编写代码注意事项

这是相较于其他的编程语言来对比的结果

  • 大括号

{}

是建议独占一行的

  • C# 代码是区分大小写的

  • 所有的语句和表达式必须以分号(

;

)结尾。

// 区分大小写,如果 staic 该成 Static 就会无法运行
static void Main(string[] args)
{   //大括号独占一行
            
    Console.WriteLine("你好!");  //这里 以 ; 结束
            
}   //大括号独占一行

五、控制台常用代码

控制台应用程序是入门级的应用程序,一般常用的代码如下:

//输出
Console.Write("你好");
//换行输出
Console.WriteLine("你好");
//以上代码主要用于在控制台输出信息
//读取控制台输入的信息
Console.Read();
//读取控制台当前行输入的信息
Console.ReadLine();
//读取字符
Console.ReadKey();
//以上代码主要用于在控制读取输入的信息
//接受用户输入的字符串,以换行结束
string s=Console.ReadLine();
  • 建议控制台应用程序代码以

Console.ReadLine()

Console.ReadKey()

结束

  • 因为早先的时候,控制台不以

Console.ReadLine()

Console.ReadKey()

结束,代码走完,控制台的窗体就会关闭。如今变成了可以配置的项。

六、程序结构

1. 概述

C# 程序由一个或多个文件组成。 每个文件均包含零个或多个命名空间。 一个命名空间包含类、结构、接口、枚举、委托等类型或其他命名空间。

  • C# 程序
  • 一个或多个文件
  • 零个或多个命名空间
  • 类、结构、接口、枚举、委托等类型或其他命名空间

下面的案例代码,展示了 基本的C# 程序结构

// A skeleton of a C# program
using System;
namespace YourNamespace
{
    class YourClass
    {
    }
    struct YourStruct
    {
    }
    interface IYourInterface
    {
    }
    delegate int YourDelegate();
    enum YourEnum
    {
    }
    namespace YourNestedNamespace
    {
        struct YourStruct
        {
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //Your program starts here...
            Console.WriteLine("Hello world!");
        }
    }
}
  • Main 就是方法,并且是个静态方法, 是程序的入口点,即程序从这里开始执行你所编写的代码
  • namespace 就是命令空间
  • using 在这里 表示 引用命名空间,如

using System;

表示引入System 命名空间

  • class 就是 类,

class Program

就是 名为 Program 的类

2. Main 方法

  • Main 方法是 C# 应用程序的入口点。 Main 方法是应用程序启动后调用的第一个方法。
  • C# 程序中只能有一个入口点。如果多个类包含 Main 方法,必须使用 StartupObject 编译器选项来编译程序,以指定将哪个 Main 方法用作入口点。具体操作如下图所示:

七、C# 程序编译过程

1. .NET 与CLR

  • .NET 提供了一个称为公共语言运行时的运行时环境,它运行代码并提供使开发过程更轻松的服务。
  • CLR 是.NET 实现的一个组成部分。

2. CLR

  • CLR :全称 Common Language Runtime,公共语言运行时
  • CLR是通用语言架构(简称CLI)的微软实现版本
  • CLR是一个类似于JVM的虚拟机,为微软的.Net产品提供运行环境。CLR运行一种称为“通用中间语言”的字节码,这个是微软的通用中间语言实现版本。
  • 运行时提供如下优点:
  • 性能得到了改进。
  • 能够轻松使用用其他语言开发的组件。
  • 类库提供的可扩展类型。
  • 语言功能,如面向对象的编程的继承、接口和重载。
  • 允许创建多线程的可缩放应用程序的显式自由线程处理支持。
  • 结构化异常处理支持。
  • 自定义特性支持。
  • 垃圾回收(Garbage Collector),它能为你自动管理内存。
  • GC自动从内存中删除程序不再访问的对象
  • GC使程序员不再操心以前必须执行的非常困难而且耗时的任务,比如释放内存和检查内存泄漏。
  • 使用委托取代函数指针,从而增强了类型安全和安全性。

3. MSIL / CIL / IL

  • IL :中间语言
  • CIL:通用中间语言
  • MSIL:微软的通用中间语言实现版本

4. 托管代码和非托管代码

  • 使用面向运行时的语言编译器开发的代码称为托管代码。 托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化了组件交互模型、调试和分析服务等。
  • 在公共语言运行库环境的外部,由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务;
    托管代码:为.NET框架编写的代码称为托管代码,需要CLR。
    非托管代码:不在CLR控制之下运行的代码,比如Win32C/C++ DLL

5. 扩展

  • CLR上实际运行的并不是我们通常所用的编程语言(例如C#、VB等),而是一种字节码形态的“中间语言”。这意味着只要能将代码编译成这种特定的“中间语言”(MSIL),任何语言的产品都能运行在CLR上。
  • 微软已经为多种语言开发了基于CLR的编译器,这些语言包括:C++/CLI、C#、Visual Basic、F#、Iron Python、 Iron Ruby和IL。除此之外,其他的一些公司和大学等机构也位一些语言开发了基于CLR的编译器,例如Ada、APL、Caml、COBOL、Eiffel、Forth、Fortran、Haskell、Lexicon、LISP、LOGO、Lua、Mercury、ML、Mondrian、Oberon、Pascal、Perl、PHP、Prolog、RPG、Scheme、Smaltak、Tcl/Tk。
  • CLR为不同的编程语言提供了统一的运行平台,在很大程度上对上层开发者屏蔽了语言之间才特性差异。对于CLR来说,不同语言的编译器(Compiler)就相当于一个这种语言的代码审查者(Checker),所做的工作就是检查源码语法是否正确,然后将源码编译成CLR所需要的中间语言(IL)。所以编程语言对于CLR是透明的,也就是说CLR只知道IL的存在,而不知道IL是由哪种语言编译而来。

  • 有了公共语言运行时,就可以很容易地设计出对象能够跨语言交互的组件和应用程序。CLR的这种“公共语言”的特性使得“多语言混合编程”成为可能,让APL开发人员可以使用自己熟悉的语言和语法来开发基于.Net的项目。当然,更重要的是,这种特性允许用不同的语言来开发同一个项目的不同模块,比如在一个项目中用Visual Basic开发UI、用APL开发财务相关的模块,而与数学计算有关的模块使用F#,充分利用这些语言的特性,将会得到意想不到的效果。

4. 编译过程

本结所用示例图来自C#、.NET Framework、CLR的关系

  • (1)编译成CIL:.NET语言的编译器接受源代码文件,并生成名为程序集的输出文件。程序集可以是

exe

dll

  • 程序集里的代码并不是本机代码,而是一种名称为CIL(Common Intermediate Language,公共中间语言)的中间代码。
  • 程序集包含的信息中,包含下列项目:程序的CIL、程序中使用的类型的元数据、对其他程序集引用的元数据
  • (2)编译成本机代码并执行:程序的CIL直到它被调用运行时才会被编译成本机代码。在运行时,CLR执行下面的步骤(如下图)
  • 检查程序集的安全特性
  • 在内存中分配空间
  • 把程序集中的可执行代码发送给实时(Just-in-Time)编译器,把其中的一部分编译成本机代码。
  • (3)编译和执行综述:无论原始源文件的语言是什么,懂遵循同样的编译和执行过程。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号