初次遇见 .NET

安装 .NET SDK

.NET官网下载, 可以选择 .NET 5, 或 .NET Core 3.1, 在这里我选 .NET 5.0, 安装完後, 使用 command-line 工具, 执行 dotnet --version, 确认有安装成功

Hello World

在 command-line 中 执行以下指令

mkdir hello # 建立 hello 目录
cd hello # 进入 hello 目录
dotnet new console # 建立 console 专案
dotnet run # 执行专案
# 结果打印出 Hello World!

很神奇, 一行 code 没写, 指令打一打就可以执行了
我们来看看, 这其中发生了什麽事, dotnet new console 指令是 dotnet sdk 指令, 意思是在当前目录以 Console Application 为范本建立专案, dotnet run 执行当前目录里的专案, 我们选用一套编辑器来试试, 这里使用 VS Code, 使用 VS Code 打开 hello 目录, 发现两个档案 hello.csproj, Program.cs, hello.csproj 是专案档如下, 其中 TargetFramework 可以用来设定目标的 .NET 版本

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>
</Project>

另外一个档案 Program.cs 就是程序主档, 打开发现其中程序的进入点 Main 就在里面,

using System;   // 参考 System namespace 
namespace hello  // 设定 namespace 为 hello
{
    class Program  // 定义类名为 Program
    {
        static void Main(string[] args) // 定义静态方法 Main, 此为程序进入点 
        {
            Console.WriteLine("Hello World!");  
            // 这里是使用 System namespace 下的 Console类的静态方法WriteLine 来打印 Hello World!
        }
    }
}

C# 基础观念

分两种类型, 一种实值型别(value types), 一种参考型别(reference types), value type 的变数值接包含其资料, reference type 的变数会储存资料的参考, 称为物件(object), 有可能两个变数参考到同一物件, 当对其中一个变数作操作时可能就会影响到另一个变数的参考物件, 标示符(identifier) 是变数的名称, 可由 unicode 字元组成不含任何空白.
实值型别又分成简单类型(simple type), 列举类型(enum type), 结构类型(struct type), 可 null 值的实值类型(nullable value type), 元祖实值类型(tuple value type)
参考型别又分成类别类型(class type), 介面类型(interface type), 阵列类型(array type), 委派类型(delegate type)
任何型别的值都可以视为 object, 每个型别都直接或间接衍生自 object 类别型别, object 是所有型别的基础类别, 实值型别的值可以视为 object, 是透过执行 boxing 和 unboxing

int i = 123;
object o = i; // Boxing
int j = (int)o; // Unboxing

<<:  豆技巧到底实用不实用呢?

>>:  Day_05 : 让 Vite 来开启你的Vue 之 前进Vite

从零开始的8-bit迷宫探险【Level 17】稻草人也想要智慧大脑,给怪物一点灵魂跟一点点个性

「我们不能漫无目的地追,要拟定包夹计画!」Rain 大声地说,并展露出大哥是对的姿态。 「我去魔幻...

Day-13 Ruby简单的程序考题!

有些公司会有上机的程序考题,相信初心者会怕怕(我个人是会啦),但从简单的题目开始学习吧! 把阵列 ...

成为工具人应有的工具包-30 WinLogOnView

WinLogOnView 最後一天啦!一如往常 今天来认识这个简单小工具,用来查看使用者登入资讯的东...

Unity与Photon的新手相遇旅途 | Day30-总结

今天的内容为总结这次铁人赛的教学内容,以及提供一些想法意见给大家延伸,这次铁人赛过程中若有讲不清楚或...

Day 28 [Python ML、资料清理] 处理字元编码

Get our environment sep up # modules we'll use imp...