C#:基本语法

写在前面

本人在实习过程需要用C#进行开发,但本人之前的技术栈是C++方向,所以在菜鸟教程上速通了一下C#的基本语法,总的来说和C++还是非常相似的。

1 关键字

  • using关键字:使用命名空间
  • class:使用类

2 注释

csharp 复制代码
/* 这个程序演示
C# 的注释使用 
*/

// 单行注释

3 数据类型

  • 值类型
    • 可以用sizeof获得类型大小
  • 引用类型
    • object:所有数据类型的基类
    • dynamic:运行时检查类型
    • string
      • ""
      • @
    • class
    • interface
    • delegate
  • 指针类型:类似于C++中的指针

4 类型转换

  • 隐式类型转换:小范围类型到大范围类型,编译器自动完成
  • 显式类型转换大范围类型到小范围类型,强制执行
  • 类型转换方法
    • Convert类:基本数据类型间转换
    • Parse方法:字符串转换为对应的数值类型
    • TryParse方法:类似Parse方法

5 变量

5.1 变量类型

  • 整数
  • 浮点
  • 十进制
  • 布尔
  • 空字符串
  • 空类型

5.2 作用域

  • 局部变量:只在声明的代码块中可见
  • 块级作用域:{}中的作用域
  • 方法参数作用域:在整个方法中可见
  • 全局变量:在整个命名空间可见
  • 静态变量:在被定义的类中可见
  • 循环变量:循环中可见

6 常量

  • 整数常量:
    • 前缀:十进制(无),八进制(0),十六进制(0X,0x)
    • 后缀:unsigned(U,u),long(L,l)
  • 浮点常量:整数、小数点、小数部分和指数
  • 字符常量:使用单引号括住
  • 字符串常量:使用双引号或者@""
  • 使用const关键字修饰

7 运算符

总结一些C#中的重要运算符

  • typeof:返回class的类型
  • is:判断对象是否为某一类型
  • as:强制类型转换,即使转换失败也不会抛出异常

8 封装

访问修饰符

  • public:所有对象都可以访问
  • private:类内对象可以访问
  • protected:类和子类对象可以访问
  • internal:同一程序集对象可以访问
  • 带有 internal 访问修饰符的任何成员可以被定义在该成员所定义的应用程序内的任何类或方法访问。
  • protected internal:访问限于当前程序集或派生自包含的类型

9 方法

类似C++

10 可空类型(Nullable)

C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。

例如,Nullable< Int32 >,读作"可空的 Int32",可以被赋值为 -2,147,483,648 到 2,147,483,647 之间的任意值,也可以被赋值为 null 值。类似的,Nullable< bool > 变量可以被赋值为 true 或 false 或 null。

在处理数据库和其他包含可能未赋值的元素的数据类型时,将 null 赋值给数值类型或布尔型的功能特别有用。例如,数据库中的布尔型字段可以存储值 true 或 false,或者,该字段也可以未定义。

  • ?:用于对于int,double,bool等无法直接赋值为null的数据类型进行null的赋值。
  • ??:用于在判断一个变量为null的时候返回一个指定的值。

11 数组,字符串,结构体,枚举和类

与C++基本相同

12 继承

C#不支持多重继承,可以通过接口继承实现

13 接口

类似于抽象类,定义了类需要实现的方法。

14 文件操作

System.IO命名空间有各种不同的类,用于进行各种文件操作。

  • FileStream类:文件的读写和关闭

15 特性

特性可以看作是一种标记或注解,它们可以提供关于程序元素的附加信息,这些信息可以在编译时或运行时被读取和使用。

相关推荐
李永奉1 小时前
杰理可视化SDK开发-【BUG】配置“TWS两边同时按消息使能”功能后,按键单击功能无效失灵
开发语言·单片机·嵌入式硬件·物联网·bug
m0_617493941 小时前
Python OpenCV 透视变换(Perspective Transform)详解与实战
开发语言·python·opencv
程序猿编码1 小时前
用C++从零开始造一个微型GPT,不借助任何第三方库
开发语言·c++·gpt·模型推理
普通网友2 小时前
pytest一些常见的插件
开发语言·python·pytest
苦瓜花2 小时前
【Kotlin】初入门
android·开发语言·kotlin
cndes2 小时前
给Miniconda换源,让包下载更迅速
开发语言·python
唐青枫2 小时前
看懂 IL 的关键:C#.NET 栈机执行模型实战拆解
c#·.net
LuminousCPP2 小时前
C 语言集中实践全记录:顺序表 + 单链表原理实现与通讯录项目实战【附可运行源码】
c语言·开发语言·数据结构·经验分享·笔记
兰令水2 小时前
hot100【acm版】【2026.7.13打卡-java版本】
java·开发语言·数据结构·算法·leetcode·面试
铅笔侠_小龙虾3 小时前
Rust 学习(4)-函数与注释
开发语言·学习·rust