DEV Community

Ariston
Ariston

Posted on • Edited on

C# 基本语法。

C#简介

c#是专门为.net框架设计的语言。运行环境是首先c#编译为中间语言(IL intermediate language),然后在.net运行时(CLR common language infrastructure)环境中执行,其中CLR提供了内存管理、异常处理、安全性等服务。
c#和.net被发明的目的:提供统一的跨平台的编程环境,加强不同语言不通操作系统之间的互操作性。
兼容语言:遵循CLI规范的编程语言。
CLI能让编写的代码能够在不同的环境中运行。
CTS:(common type system),是CLI的一个关键部分,比如说,遵循咧CLI的语言,一个用 C# 编写的类可以被 VB.NET 或其他 CLI 兼容语言使用。
元数据:描述程序结构的数据,比如,一个类的定义、方法的签名都是元数据。
C#不是解释性语言,他是先编译为IL,然后在有CLR通过JIT(just in time compiler)编译成机器代码,既有编译型语言的性能,又有解释型语言的灵活。
对于C#的跨平台能力,C#可以在windows、linux以及macos上运行无需更改代码。
总结 C#和.net是为了统一的编程环境和良好的跨平台能力而被研发,C#首先被编译为IL,然后IL由CLR通过JIT编译成机器代码。

.net框架

包括CLR和庞大的类库,组件不像c++中的类或代码片段,在.net中,通常是以类库的形式存在,提供了可重用的代码单元

C#环境配置

我们使用的是vscode通过ssh连到阿里云,我们使用的是linux进行开发,所以我们使用以下步骤来配置环境:

wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
Enter fullscreen mode Exit fullscreen mode

然后安装依赖:

sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-6.0
Enter fullscreen mode Exit fullscreen mode

上述是6.0,下面是7.0

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-7.0
Enter fullscreen mode Exit fullscreen mode

C#程序结构

包含如下
1.命名空间声明
2.一个class
3.class属性
4.一个main方法
5.语句&表达式
文件后缀为cs

下面是示例代码

using System;
namespace HelloWorldApplication
{
   class HelloWorld
   {
      static void Main(string[] args)
      {
         /* 我的第一个 C# 程序*/
         Console.WriteLine("Hello World");
         Console.ReadKey();
      }
   }
}
Enter fullscreen mode Exit fullscreen mode

编译这个程序
1.创建一个新的.net控制台应用程序项目

dotnet new console -n HelloWordApp -o HelloWordApp
Enter fullscreen mode Exit fullscreen mode

dotnet new console用来创建新项目的命令,console指定项目模版类型,
-n HelloWordApp指定新项目的名称,在这里新项目被命名为HelloWordApp
-o 这里指定新项目的输出目录,

这里面的Program.cs是程序的入口函数Main的部分,然后我们直接在项目目录中dotnet run就ok了。
项目目录中还有一些文件和目录,obj和bin分别是中间文件和最终可执行文件的目录
.csproj是项目配置文件,里面包含了元数据和依赖项信息。

C#基本语法

示例代码

using System;
namespace RectangleApplication
{
    class Rectangle
    {
        // 成员变量
        double length;
        double width;
        public void Acceptdetails()
        {
            length = 4.5;    
            width = 3.5;
        }
        public double GetArea()
        {
            return length * width;
        }
        public void Display()
        {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    }
    
    class ExecuteRectangle
    {
        static void Main(string[] args)
        {
            Rectangle r = new Rectangle();
            r.Acceptdetails();
            r.Display();
            Console.ReadLine();
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

using System 允许您在代码中直接使用 System 命名空间中的类和方法。
namespace 用于组织相关的类,避免命名冲突。
每个 C# 程序都必须有一个 Main 方法作为程序的入口点,且 Main 方法必须位于某个类中。因为C#是面向对象编程不支持全局方法。

C#数据类型

值类型:就是一些c++的内置类型
引用类型:引用类型的变量存储的是对象的引用(即内存地址),其实很像指针。
引用类型内置的又分为对象类型、动态类型和字符串类型,然后可由用户自定义的有class、interface还有delegate。我们先说说引用内置类型
对象类型:是所有数据类型的终极基类,可以被分配任何其他类型。其中一个值转变为对象类型时称为装箱(boxing),对象类型转为值类型时称之为拆箱(unboxing)
动态类型:有点类似于auto,但又不是,auto是在编译时确定了,而dynamic是在运行时确定的。
字符串类型:有点类似于const string。

string str = @"C:\Windows";
Enter fullscreen mode Exit fullscreen mode

等价于

string str = "C:\\Windows";
Enter fullscreen mode Exit fullscreen mode

C#类型转换

没啥说的,挺简单的,和C++很像,看见了再说吧
https://www.runoob.com/csharp/csharp-type-conversion.html

C#中的委托可以看作是函数指针

关于程序集,DLL、EXE
其中程序集就是编译后的代码逻辑单元,DLL或EXE是这些代码的物理表现。

Top comments (0)