【学习资料】

  《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 = ;
      }
      // 实参和形参是2个变量,但指向同一个对象
      void changeC1(C c)
      {
      c.value = ;
      c = new C();
      c.value = ;
      }
      // ref : 形参是实参的引用,是同一个变量
      void changeC2(ref C c)
      {
      c.value = ;
      c = new C();
      c.value = ;
      } // 调用
      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. 1.基础篇之vue入门

    为了建立高效团队,很多公司会采用全栈工程师,虽然利弊兼有,对于成本优先的创业团队,肯定是首选,特别是对.net生态圈,大部分都是小公司,就更加重要了.这里记录的是对vue的学习点滴,希望对你有所助力. ...

  2. iOS开发基础篇-Button基础

    一.简单介绍  UIButton 的功能:响应用户操作.显示文字.显示图片.调整内部图片和文字的位置. 二. UIButton 的状态  UIControlStateNormal :普通状态,为默认情 ...

  3. SpringBoot基础篇-SpringBoot快速入门

    SpringBoot基础 学习目标: 能够理解Spring的优缺点 能够理解SpringBoot的特点 能够理解SpringBoot的核心功能 能够搭建SpringBoot的环境 能够完成applic ...

  4. JavaSE基础篇—MySQL基础知识点

    MySQL MySQL是一种关系数据库管理系统,是一种开源软件.可搭配PHP和Apache可以有更好的性能,也可以工作在众多的平台上.Orcale是一个数据库创建多个用户,MySQL是一个用户创建多个 ...

  5. Python学习之路基础篇--08Python基础+ 文件的基本操作和 注册小作业

    1 文件的基本操作 #1. 打开文件的模式有(默认为文本模式): r ,只读模式[默认模式,文件必须存在,不存在则抛出异常] w,只写模式[不可读:不存在则创建:存在则清空内容] a, 只追加写模式[ ...

  6. python基础篇_002_基础数据类型

    Python基础数据类型 1.int # int 用于计算 num = 3 # int 与其他数据类型转换 int_to_str = str(num) # 数字加引号 print(int_to_str ...

  7. Python学习之路基础篇--02Python基础+小作业

    1 变量 变量就是将一些运算的中间结果暂存到内存中,以便后续代码调用.必须由数字,字母,下划线任意组合,且不能数字开头.不能是python中的关键字,如['and', 'as', 'assert', ...

  8. Extjs 基础篇—— Function基础

    这里主要是JS的基础知识,也是深入理解Ext的基础.1.参数可变长,注意跟Java还是有一点区别的.例: 1.function getUser(name,age){ 2.alert("nam ...

  9. 学习笔记三:基础篇Linux基础

    Linux基础 直接选择排序>快速排序>基数排序>归并排序 >堆排序>Shell排序>冒泡排序=冒泡排序2 =直接插入排序 一.Linux磁盘分区表示 Linux中 ...

随机推荐

  1. zabbix4.0的安装与配置

    #安装zabbix监控首先的先安装LNMP环境,在这里我采用事先准备好的脚本进行安装LNMP环境 脚本内容如下: #!/bin/bash # DATE:Wed Jan # hw226234@126.c ...

  2. python代码迷之错误(ModuleNotFoundError: No module named 'caffe.proto')

    1.pandas.read_csv book[n]下的print(n) 总图片数是少一张的,print(n)发现也是少了一个序号 仔细查找后发现缺少99号,即最后一张图片没有被读取.print(m)时 ...

  3. SSL:GoDaddy SSL证书制作和安装

    简介 SSL证书是数字证书的一种类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器证书.SSL 证书就是遵守SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁 ...

  4. css 浏览兼容问题及解决办法 (2)

    1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了.缺点是要控制内容不要换行 2. ...

  5. finalize的用法

    public class GC {          public static GC SAVE_HOOK = null;          public static void main(Strin ...

  6. 基于python的密码字典生成器

    最近在网上看到一些作品,然后对其进行了一些完善.只是用于学习,不要去干坏事哦.程序来源于网络,我只是做了一些优化. #!/usr/bin/python# -*- coding:utf-8 -*-# @ ...

  7. 分区格式化大于2 TiB磁盘

    如果您要分区格式化一块大于2 TiB的作数据盘用的云盘(本文统一称为 大容量数据盘,小于2 TiB的数据盘统称为 小容量数据盘),您必须采用GPT分区形式.本文档描述了如何在不同的操作系统里分区格式化 ...

  8. 使用Git和Svn

    一. 使用SVN 1. 下载tortoiseSVN 2. 右键SVN checkout(下载项目到本地) 3. 更新和提交 二. 使用GIT 1. 下载git 2. 下载tortoiseGit 3. ...

  9. docker配置容器运行jar包

    拉取jdk镜像文件 # docker pull huanwei/alpine-oraclejdk8 创建文件夹编写Dockerfile文件 # mkdir docker # vi Dockerfile ...

  10. Spring ioc(4)---如何解决循环依赖

    前面说到对象的创建,那么在创建的过程中Spring是怎么又是如何解决循环依赖的呢.前面提到有个三级缓存.就是利用这个来解决循环依赖.打个比方说实例化A的时候,先将A创建(早期对象)放入一个池子中.这个 ...