【Unity|C#】基础篇(1)——基础入门
【学习资料】
《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)——基础入门相关推荐
- Redis学习笔记①基础篇_Redis快速入门
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...
- [Unity 学习] - 进阶篇 - Mesh基础系列1:生成网格
[Unity 学习] - 进阶篇 - Mesh基础系列1:生成网格 本文并非原创,只是本人的学习记录,原文是由放牛的星星老师翻译Catlike系列教程 链接: https://mp.weixin.qq ...
- java基础篇_java基础篇1
JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...
- 【谷粒商城基础篇】基础环境搭建
谷粒商城笔记合集 分布式基础篇 分布式高级篇 高可用集群篇 ===简介&环境搭建=== 项目简介与分布式概念(第一.二章) 基础环境搭建(第三章) ===整合SpringCloud=== 整合 ...
- java官网教程(基础篇)—— 新手入门
新手入门 Java技术的介绍,以及安装Java开发软件和使用它创建一个简单程序的课程. 本教程提供了关于开始使用Java编程语言所需了解的一切. Java 技术现象 提供Java技术的整体概述.它讨论 ...
- springboot基础篇(快速入门 + 完整项目案例)
目录 1.springboot简介 2.REST风格 1.简介 2.RESTful 3.复制工程 4.属性配置 1.application.properties 2.application.yml.. ...
- stk软件支持Linux,STK组件基础篇:开发入门
本文及后续系列文章主要采用STK组件的.Net版本作为开发包. 1. 获取开发包 正常的获取途径是访问AGI官网,注册并登录后,从官网下载开发包:https://support.agi.com/dow ...
- 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 修改 ...
- java官网教程(基础篇)—— 基础的Java类 —— 基础 I / O
目录 基本 Java 类 基础 I/O I/O流 字节流 字符流 缓冲流 扫描和格式化 扫描 格式化 从命令行中进行IO操作 数据流 对象流 文件 I/O(采用 NIO.2) 什么是路径? Path类 ...
最新文章
- 计算机ppt2003考试试题,计算机模块PPT2003试题及答案.doc
- 【SAP-PM模块】维护业务处理流程
- 安装matplotlib和cx_Freeze
- 一气发了3个patch
- python怎么读是啥意思-请问在python中**是啥什么意思?
- Kafka分区分配策略(Partition Assignment Strategy)
- 第八周结对编程四则运算二
- [翻译]2005年软件业界推出新产品非官方计划
- Python wxpy通过ModBus控制电脑鼠标和键盘
- Android开发工具集合
- 2011年浙江计算机二级vfp是什么,2011年计算机二级VFP考试基础教程(21)
- 双目测距原理以及双目相机矫正
- pregnant用法
- 力扣(13.278)补8.23
- [linux] unzip
- X-XSS-Protection
- 用python简单入门写糖葫芦!
- Educational Codeforces Round 87 (Rated for Div. 2) F. Summoning Minions
- 香料图片加名称及其作用
- 宝峰uv5r怎么设置信道_宝峰UV-5R对讲机怎么操作?