【学习资料】

  《C#图解教程》(第2~12章):https://www.cnblogs.com/moonache/p/7687551.html
  电子书下载:https://pan.baidu.com/s/1mhOmBG0

【内容】

  • 标识符命名
  • 值类型及取值范围
  • 栈与堆(数据存储方式)
  • 特殊运算符
  • 对象类型(object)
  • 访问修饰符(public、private、protected、internal)
  • 可空类型(?、??、Nullable)
  • 数组
    • 一维数组
    • 二维数组(矩形数组)
    • 交错数组(每行个数可不同,单独new)
    • 扩展知识

      • 字符串的@
      • 值类型、引用类型、ref 的区别
      • 二进制表示
      • 位运算溢出问题

【笔记】

  • 标识符命名

    • 标识符必须以 字母下划线(_) 或 @ 开头,后面可以跟一系列的 字母、数字(0-9)、下划线(_)

    • 不能使用C#保留的关键字,如 if,但可以为 @if

  • 值类型及取值范围

  • 常量前缀指定基数

    • 十进制:没有前缀

    • 十六进制:0x 或 0X 。如:0x10 表示 十进制 16

    • 八进制:0 。如:010 表示 十进制 8

    • 二进制:0b 。如:0b10 表示 十进制 2

  • 常量后缀指定精度(U 和 L 分别表示unsigned和long)

    • u 或 U : 10U    表示 uint

    • l 或 L   : 10L    表示 long

    • LU组合: 10LU 表示 ulong

  • 栈与堆(数据存储方式)

    传送门:https://www.cnblogs.com/shahdza/p/12236770.html

  • 特殊运算符

  • 对象类型(object)

    • 所有类型的最终基类(包括值类型、struct、class)都是object。

    • 装箱:将 值类型 转为 object        

    • 拆箱:将 objec t转为 值类型

    • 箱/拆箱会产生一定的消耗,尽量少用。

  • 访问修饰符

public 所有对象
private 只有本类的内部函数
protected 本类及子类内部函数
internal 同一程序集(dll)
protected internal 同一程序集(dll),或 其他程序集的子类内部函数
  • 可空类型(Nullable、?、??)

    • int? i = 3 等同于 Nullable<int> i = new Nullable<int>(3)

    • int i;   // 默认值为0

    • int? i; // 默认值为null

    • 合并运算符(??):num3 = num1 ?? 5.34;  // num1 如果为空值则返回 5.34

  • 数组(Array)

    • 一维数组:int[] numbers = new int[10];

      • 初始化:= new int[]  {1, 2, 3, 4, 5};

      • 初始化:= {1, 2, 3, 4, 5};

    • 二维数组:string[,] names = new string[5, 4];

      • 每行个数固定相同(都是4)

      • 初始化:= { {"a", "b", "c", "d"} , {"e", "f", "g", "h"} };

    • 交错数组:byte[][] scores = new byte[5][]

      • scores[i] = new byte[i + 3]

      • 每行个数可以不同

      • 初始化:= {new int[]{1,2,3} , new int[]{1,2,3,4} };

    • 不同数组示意图

        

  • 二维数组和交错数组的内存结构

        


【扩展知识】

  • 字符串的@

    • @(称作"逐字字符串")将 转义字符(\)当作普通字符对待
    • 如:

      • @"Hello \n World" : 其中\n不会被转义,而是单做普通字符处理;
      • 路径:@"C:\xxx\xxx.doc" 等价于 "C:\\xxx\\xxx.doc"
      • 如果要在@的字符串中使用双引号("),需要用2个双引号"" (而不是 \")
  • 值类型 、引用类型 、ref

    • 值类型:当形参值改变时,实参值不变;相当于 形参是实参的拷贝,是不同的对象

    • 引用类型:当形参值改变时,实参值也会改变;相当于 形参和实参,指向同一个对象,但形参和实参不是一个变量(类似指针变量)

    • 引用传递ref:与“引用类型”区别在于,形参与实参是同一个变量(相当于取个别名)

    • class C
      {public int value = 0;
      }
      // 实参和形参是2个变量,但指向同一个对象
      void changeC1(C c)
      {c.value = 10;c = new C();c.value = 30;
      }
      // ref : 形参是实参的引用,是同一个变量
      void changeC2(ref C c)
      {c.value = 10;c = new C();c.value = 30;
      }// 调用
      C m_c1 = new C();   //
      C m_c2 = new C();   //
      changeC1(m_c1);     // 结果为 10
      changeC2(ref m_c2); // 结果为 30

  • 二进制表示

      

 

  • 位运算(& | ^ ~ << >>)

    • & 、| 、^ 、~ :符号位参与运算

      • 1 & -1 = 1

      • 1 | -1 = -1

      • 1 ^ -1 = -2

      • -1 ^ -8 = 7

      • ~1 = -2

      • ~-1 = 0

      • ~-8 = 7

    • << :符号位参与运算;高位丢弃,低位补0

      • -2147483646 << 1 = 4

      • -2147483646 << 29 = 1073741824

      • -2147483646 << 30 = -2147483648

      • -2147483646 << 31 = 0

      • -2147483646 << 32 = -2147483646

      • -2147483646 << 33 = 4

    • >>

      • 有符号:

        • C#   :补符号位(算术右移)

        • C++:各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)

      • 无符号:高位补0

      • -1 >> 1 = -1

      • -1 >> 2 = -1

      • -127 >> 1 = -64

      • -127 >> 6 = -2

      • -127 >> 7 = -1

      • -127 >> 8 = -1

      • -127 >> 31 = -1

      • -127 >> 32 = -127

      • -127 >> 33 = -64

 

【Unity|C#】基础篇(1)——基础入门相关推荐

  1. Redis学习笔记①基础篇_Redis快速入门

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  2. [Unity 学习] - 进阶篇 - Mesh基础系列1:生成网格

    [Unity 学习] - 进阶篇 - Mesh基础系列1:生成网格 本文并非原创,只是本人的学习记录,原文是由放牛的星星老师翻译Catlike系列教程 链接: https://mp.weixin.qq ...

  3. java基础篇_java基础篇1

    JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...

  4. 【谷粒商城基础篇】基础环境搭建

    谷粒商城笔记合集 分布式基础篇 分布式高级篇 高可用集群篇 ===简介&环境搭建=== 项目简介与分布式概念(第一.二章) 基础环境搭建(第三章) ===整合SpringCloud=== 整合 ...

  5. java官网教程(基础篇)—— 新手入门

    新手入门 Java技术的介绍,以及安装Java开发软件和使用它创建一个简单程序的课程. 本教程提供了关于开始使用Java编程语言所需了解的一切. Java 技术现象 提供Java技术的整体概述.它讨论 ...

  6. springboot基础篇(快速入门 + 完整项目案例)

    目录 1.springboot简介 2.REST风格 1.简介 2.RESTful 3.复制工程 4.属性配置 1.application.properties 2.application.yml.. ...

  7. stk软件支持Linux,STK组件基础篇:开发入门

    本文及后续系列文章主要采用STK组件的.Net版本作为开发包. 1. 获取开发包 正常的获取途径是访问AGI官网,注册并登录后,从官网下载开发包:https://support.agi.com/dow ...

  8. MYSQL 基础篇 | 02-MYSQL基础应用

    文章目录 1 MySQL概述 2 SQL 2.1 SQL通用语法 2.2 SQL分类 2.3 DDL 2.3.1 数据库操作 2.3.2 表操作 2.4 DML 2.4.1 添加数据 2.4.2 修改 ...

  9. java官网教程(基础篇)—— 基础的Java类 —— 基础 I / O

    目录 基本 Java 类 基础 I/O I/O流 字节流 字符流 缓冲流 扫描和格式化 扫描 格式化 从命令行中进行IO操作 数据流 对象流 文件 I/O(采用 NIO.2) 什么是路径? Path类 ...

最新文章

  1. 计算机ppt2003考试试题,计算机模块PPT2003试题及答案.doc
  2. 【SAP-PM模块】维护业务处理流程
  3. 安装matplotlib和cx_Freeze
  4. 一气发了3个patch
  5. python怎么读是啥意思-请问在python中**是啥什么意思?
  6. Kafka分区分配策略(Partition Assignment Strategy)
  7. 第八周结对编程四则运算二
  8. [翻译]2005年软件业界推出新产品非官方计划
  9. Python wxpy通过ModBus控制电脑鼠标和键盘
  10. Android开发工具集合
  11. 2011年浙江计算机二级vfp是什么,2011年计算机二级VFP考试基础教程(21)
  12. 双目测距原理以及双目相机矫正
  13. pregnant用法
  14. 力扣(13.278)补8.23
  15. [linux] unzip
  16. X-XSS-Protection
  17. 用python简单入门写糖葫芦!
  18. Educational Codeforces Round 87 (Rated for Div. 2) F. Summoning Minions
  19. 香料图片加名称及其作用
  20. 宝峰uv5r怎么设置信道_宝峰UV-5R对讲机怎么操作?

热门文章

  1. 2台主机的docker互相通信的方法
  2. Notepad设置sql语法高亮
  3. spring IOC容器 Bean 管理——基于注解方式
  4. LeetCode 413. Arithmetic Slices
  5. Linux cd命令:切换目录
  6. 【今日CV 视觉论文速览】 13 Feb 2019
  7. 【设计模式】设计模式C++编程实现之单例模式(Singleton Pattern)
  8. TreeView节点的演练 c# 1614840318
  9. django-模板语言dtl-render
  10. 02-mysql数据库的特点-卸载-安装-配置-mysql5.5版本