avatar

一条在知识海洋的咸鱼

这个家伙很懒,啥也没有留下😋

  • 首页
  • Linux
  • OCJP
  • Java核心技术卷
  • J2EE相关标准
  • 深入理解Java虚拟机
  • NIO与SOcket编程技术指南
  • Java多线程编程核心技术
  • Redis开发与运维
  • Spring Cloud Alibaba 微服务原理与实践
  • DevOps
  • Docker
  • MySQL必知必会
  • AI自学路线
  • Spring Boot 编程思想(核心篇)
主页 C#编程基础
文章

C#编程基础

发表于 2022-05-14 更新于 2026-06- 10
作者 Administrator
19~24 分钟 阅读
  • 基础
    • 相关命令行工具
    • C#关键字
  • 使用变量及类型、数组
    • 命名和赋值
    • 储存数字
    • object类型
    • 动态存储类型dynamic关键字
    • 生成对象var和new
    • 获取类型的默认值
    • 数组
    • 处理空值null
      • 声明不可为空的变量和参数
      • 判空检查null
    • using命名空间
  • 控制台
    • 输入

基础

相关命令行工具

  • dotnet --version
    查看 .NET Core SDK版本
  • dotnet new console
    创建控制台应用
  • dotnet run
    运行当前目录源代码

C#关键字

100多个关键字
using、namespace、class、static、int、string、double

使用变量及类型、数组

命名和赋值

  • 局部变量、私有变量
    采用小驼峰
  • 类型、非私有变量
    采用大驼峰
  • 存储文本的转义字符
    采用@符号作为前缀,禁用转义字符
string filePath=@"C:\televisions\sony\etc.txt";

储存数字

1.#7以及更高支持下划线_作为数字分隔符,例如10000可以写成10_000
2.float、double采用单双精度,会有精度的缺失,不可用==比较是否相等
3.decimal适用于货币、制图等高精度
4.double的其他方法

  • double.NaN 表示不是数字
  • double.Epsilon 表示可以存储在double的最小正数
  • double.IsInfinity() 表示是负无穷还是正无穷
    5.bool true或者false
int decimalNotation=2_000_000;
int binaryNotation=0b_0001_1110_1000_0100_1000_0000;
int hexadecimalNotation=0x_001E_8480;

Console.WriteLine($"{decimalNotation==binaryNotation}");
Console.WriteLine($"{decimalNotation==hexadecimalNotation}");

object类型

可存储任何类型,但是是以混淆代码的可维护性和性能为前提

object height=1.88;
object name="Amir";
Console.WriteLine($"{name} is {height} metres tall.");
int length1=name.Length; //无法编译 object类型没有此方法需要强转
int length2=((string)name).Length;
Console.WriteLine($"{name} is {length2} metres tall.");

动态存储类型dynamic关键字

C#4.0引入,其存储的变量可以在没有显式进行强制转换的情况下调用成员。
其在编译时无法检查类型,CLR在运行时检查,可能会跑出异常
image.png

生成对象var和new

  • var关键字声明局部变量,编译器将在操作赋值之后推断其类型
    1.var关键字很方便
    2.只在类型明显可以辨别时使用,否则语意不清
  • C#9.0引入新语法,面向对象类型的new,不用重复写出类型
XmlDocument xml=new();
XmlDocument xml1=new XmlDocument();

获取类型的默认值

可以使用default()方法确定类型的默认值
基本类型都有默认值,引用类型的默认值为null,注意为null时,控制台不打印null,而是打印空白

Console.WriteLine(default(int));
Console.WriteLine(default(double));
Console.WriteLine(default(float));
Console.WriteLine(default(decimal));
Console.WriteLine(default(bool));
Console.WriteLine(default(byte));
Console.WriteLine(default(string));
Console.WriteLine(default(string)==null);
Console.WriteLine(default( List<string>));
Console.WriteLine(default( List<string>)==null);

image.png

数组

下标从0开始

string[] names = new String[4];
names[0]="Kate";
names[1]="Jack";
names[2]="Rebecca";
names[3]="Tom";

for (int i = 0; i < names.Length; i++)
{
    Console.WriteLine(i);
}

处理空值null

在C#8.0中,可以配置引用类型不可为null,不再允许null值

  • 在项目文件中加入Nullable属性为enable
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>
  • 单个文件启用
    文件头顶部增加
    #nullable disable
  • 单个文件禁用
    #nullable enable

声明不可为空的变量和参数

在类型声明后加上?

class Address
{
    public string? Building = string.Empty;
    public string Street = string.Empty;
    public string City = string.Empty;
    public string Region = string.Empty;
}

判空检查null

  • 空条件运算符
    如果为null,C#可能抛出NullReferenceException可以使用三元运算符 ==
    ? : 或者空条件运算符 ?.
    A=B==null?B.property:false
    等价于
    A==B?.property
  • 空合并操作符??.
    如果B为null则A=C,否则A=B
    A==B??.C

using命名空间

类似java、python的import
using static System.Console;
用以简化代码

控制台

##输出
Write、WriteLine方法

  • 使用编号位置参数进行格式化
int numberOfApples=12;
decimal pricePerApple=0.35M;
Console.WriteLine(format:"{0} apples costs {1:C}",arg0: numberOfApples,arg1: pricePerApple*numberOfApples);
  • 使用内插字符串
Console.WriteLine($"{numberOfApples} apples costs {numberOfApples*pricePerApple:C}");

输入

  • ReadLine方法从用户获取文本
Console.Write("Type you first name and press ENTER:");
string? firstname = Console.ReadLine();
Console.Write("Type you age and press ENTER:");
string? age = Console.ReadLine();
Console.WriteLine($"Hello {firstname},you look good for {age}");
  • 获取用户的重要输入(对应键盘代号)
Write("Press any key combination: ");
ConsoleKeyInfo key=ReadKey();
WriteLine();
WriteLine($"Key:{key.Key},Char:{key.KeyChar},Modifiers:{key.Modifiers}");
  • 获取启动参数
    sting[] args
    命令行参数由空格分离,如果需要空格则需要包裹在单引号或者双引号中
using static System.Console;
using System;

namespace Arguments
{
    class MyClass
    {
        static void Main(string[] args)
        {
            string arg = null;
            foreach (string s in args)
            {
                arg += s;
            }
            WriteLine($"There are {args.Length} arguments.{arg}");
        }
    }
}

image.png

C#入门
许可协议: 
分享

相关文章

5月 15, 2022

编写、调试、测试函数

编写函数重用代码、调试逻辑错误、记录日志、单元测试编写函数无返回值的函数编写函数无返回值的函数声明为void的函数无返回值,但方法入参out关键字会导致参数通过引用来传递。且可以不用事先声明初始化,可以达到有多个返回值的效果using static System.Console;namespace

5月 15, 2022

流程控制和类型转换

对变量进行简单操作、流程语句块执行判断、将变量或表达式值从一种类型转换为另一种、异常处理、数值溢出操作变量一元运算符二元运算符赋值运算符逻辑运算符条件逻辑运算符/短路布尔运算符移位运算符其他运算符操作变量一元运算符由于一元运算符容易混淆,建议单独使用,不要和=一起使用i++、i--先赋值后运算++i

5月 14, 2022

C#编程基础

基础相关命令行工具C#关键字基础相关命令行工具dotnet --version查看 .NET Core SDK版本dotnet new console创建控制台应用dotnet run运行当前目录源代码C#关键字100多个关键字using、namespace、class、static、int、st

下一篇

流程控制和类型转换

上一篇

2022年,目标🤔

最近更新

  • 55 异常兜底:工具失败、非法输出、空检索与超时
  • 54 Agent Memory:短期记忆、用户上下文与摘要
  • 53 Human-in-the-loop:让关键动作暂停、确认与恢复
  • 52 工单 Tool:字段校验、创建结果与失败补偿
  • 51 订单 Tool:Mock、鉴权、状态解析与脱敏

热门标签

java基础 微服务 maven Spring Tomcat DDD Linux Linux基础 SQL基础 数据结构算法

目录

©2026 一条在知识海洋的咸鱼. 保留部分权利。

使用 Halo 主题 Chirpy