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 小时前
【QT】实现电子飞行显示器(改进版)
开发语言·qt
武昌库里写JAVA1 小时前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
ZSYP-S2 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos2 小时前
c++------------------函数
开发语言·c++
程序员_三木2 小时前
Three.js入门-Raycaster鼠标拾取详解与应用
开发语言·javascript·计算机外设·webgl·three.js
是小崔啊2 小时前
开源轮子 - EasyExcel01(核心api)
java·开发语言·开源·excel·阿里巴巴
tianmu_sama2 小时前
[Effective C++]条款38-39 复合和private继承
开发语言·c++
黄公子学安全2 小时前
Java的基础概念(一)
java·开发语言·python
liwulin05062 小时前
【JAVA】Tesseract-OCR截图屏幕指定区域识别0.4.2
java·开发语言·ocr