Rider编程环境
- 安装Rider
- 打开Rider,在新建console界面中安装 SDK9.0 或更新版本
- 为了方便使用csc编译器,将类似
C:\JetBrainsRider\tools\MSBuild\Current\Bin\Roslyn
加入系统path
第1章 C# 和 .net 框架
- c#读音: see sharp
- CLR: 公共语言运行时,是执行环境,包含GC自动管理内存
- BCL:基础类库
第2章 C# 和 .net Core
.net Core 与 app并行发布,每个app可以有自己的.net Core版本不会有版本冲突,占用空间小
第3章 C#编程概述
参考:https://learn.microsoft.com/zh-cn/dotnet/core/tutorials/top-level-templates
从 .NET 6 开始,新 C# 控制台应用的项目模板会在 Program.cs 文件中生成以下代码:
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
实际上是使用了隐式的using指令:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
如果不用隐式using,可以编辑类似 ConsoleApp1.csproj 的项目文件,增加 <ImplicitUsings>disable</ImplicitUsings>
:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<ImplicitUsings>disable</ImplicitUsings>
</PropertyGroup>
</Project>
完整示例:
// See https://aka.ms/new-console-template for more information
using System; // 命名空间
namespace ConsoleApp1 //命名空间
{
internal abstract class Program
{
private static void Main(string[] args)
{
Console.WriteLine("Hello, World!你好,世界");
}
}
}
使用csharp compiler 编译:
csc .\Program.cs
Microsoft(R) Visual C# 编译器 版本 4.13.0-dev.25178.1 (<developer build>)
版权所有(C) Microsoft Corporation。保留所有权利。
Main()方法:程序入口
可以用位置或变量输出字符串:
using System;
namespace ConsoleApp1;
internal abstract class Program
{
private static void Main(string[] args)
{
int v1 = 1;
int v2 = 2;
Console.WriteLine("输出整数示例:{0},{1},{0}",3,4);//输出整数示例:3,4,3
Console.WriteLine($"输出整数示例:{v1},{v2},{0},{1}",5,6);//输出整数示例:1,2,0,1
}
}
字符串格式:
序号,宽度(正负号表示右对齐或左对齐):格式
using System;
namespace ConsoleApp1;
internal abstract class Program
{
private static void Main(string[] args)
{
Console.WriteLine("You should pay |{0}|",500); //You should pay |500|
Console.WriteLine("You should pay |{0,10}|",500);//You should pay | 500|
Console.WriteLine("You should pay |{0,-10}|",500);//You should pay |500 |
Console.WriteLine("You should pay |{0,-10:c}|",500);//You should pay |¥500.00 |
}
}
冒号后的格式形式:Axx,其中A为格式说明符是单个字母,xx为精度说明符为1到2位数字
A可以为:
- G,g:general,默认
- C,C:currency,货币,货币符号和操作系统设置的所在区域相关,为¥,$等
- D,d:十进制整数,位数不够补零
- F,f:十进制小数,精度为小数位数
- X,x:十六进制数
- N,n:和F类似,小数点左侧有逗号或空格分隔符
- P,p:百分比
- E,e:科学计数法
using System;
namespace ConsoleApp1;
internal abstract class Program
{
private static void Main(string[] args)
{
Console.WriteLine("{0:C}",500); //¥500.00
Console.WriteLine("{0:D4}",500);//0500
Console.WriteLine("{0,4:D}",500);// 500
Console.WriteLine("{0:F4}",500.12345);//500.1234
Console.WriteLine("{0:x}",100860);//189fc
Console.WriteLine("{0:p3}",0.123460);//12.346%
Console.WriteLine("{0:n3}",13434732432.123460);//13,434,732,432.123
Console.WriteLine("{0:e3}",13434732432.123460);//1.343e+010
Console.WriteLine("{0:e}",13434732432.123460);//1.343473e+010
}
}
第4章 类型、存储和变量
- C程序:一组函数和数据类型
- C++程序:一组函数和类
- C#程序:一组函数和类型声明;用命名空间将类型声明分组
- 类型由成员构成,成员类型包括数据成员和函数成员
预定义类型
数值类型不具有布尔意义
预定义类型:
- object:所有其他类型的基类
- string:Unicode字符数组
- dynamic:使用动态语言编写程序时使用
- 简单类型
- 非数值类型
- bool:必须为true或false
- char:Unicode字符类型,\x0000至\xffff
- 数值类型
- 浮点数:
- float
- double
- decimal:可以准确的表示分数
- 整数
- 8位:sbyte(-128至127),byte(0至255)
- 16位:short(-32768至32767),ushort(0至65535)
- 32位:int(约正负21亿),uint(0至约42亿)
- 64位:long,ulong
- 浮点数:
- 非数值类型
用户定义类型
- class 类
- struct 结构
- array 数组
- enum 枚举
- delegate 委托
- interface 接口
值类型和引用类型
- 值类型只需要一段单独的内存用于存储实际的数据
- 引用类型需要两段数据
- 第一段存储实际的数据,总是位于堆中
- 第二段是一个引用,指向数据在堆中的存放位置
正文完