当前位置: 首页 > news >正文

C#:基本语法

写在前面

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

1 关键字

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

2 注释

/* 这个程序演示
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 特性

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 操作ArkTS页面跳转及路由相关心得
  • 矩阵:消除冗余
  • 逻辑数仓:助企业高效、低成本、轻量级整合全域数据
  • 【MySQL】执行DDL选择Online DDL还是PT-OSC?
  • [BSidesCF 2019]Kookie1
  • 算法笔记|Day20回溯算法II
  • Jenkins部署java项目
  • JAVA集中学习第四周学习记录(三)
  • 测试用例除了覆盖需求,还需要通过什么方式保证测试?
  • 深入理解和应用RabbitMQ的Work Queues模型
  • 00 cadence学习笔记目录
  • python-约瑟夫环(赛氪OJ)
  • Python 爬虫项目实战一:抖音视频下载与网易云音乐下载
  • 什么是DNS缓存?DNS缓存有哪些作用和危害?
  • 六大设计原则和23种设计模式
  • [case10]使用RSQL实现端到端的动态查询
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Angular 4.x 动态创建组件
  • codis proxy处理流程
  • Fundebug计费标准解释:事件数是如何定义的?
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • vue 配置sass、scss全局变量
  • 阿里云Kubernetes容器服务上体验Knative
  • 分类模型——Logistics Regression
  • 关于字符编码你应该知道的事情
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 学习JavaScript数据结构与算法 — 树
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 学习笔记TF060:图像语音结合,看图说话
  • 一个项目push到多个远程Git仓库
  •  一套莫尔斯电报听写、翻译系统
  • 译米田引理
  • ​虚拟化系列介绍(十)
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #知识分享#笔记#学习方法
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (java)关于Thread的挂起和恢复
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (独孤九剑)--文件系统
  • (黑马C++)L06 重载与继承
  • (蓝桥杯每日一题)love
  • (六)c52学习之旅-独立按键
  • (论文阅读30/100)Convolutional Pose Machines
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .describe() python_Python-Win32com-Excel
  • .htaccess 强制https 单独排除某个目录
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net 设置默认首页