关于Unity的C#基础学习(二)
一.Debug的使用
int a=3;
Debug.Log("a="+a);
二.整数的定义
int m;
Debug.Log(m); //C#比C更严谨,没有初始化的变量打印出来使没有意义的,会报错,这个m目前是一个不确定的数。C#的任何一行代码都是有意义的。
三.浮点数的定义
//C#比C更严谨,不能像C中的那样
float a;
a=0.1;
//会报错,必须是
float a;
a=0.1f;
四.表达式
1.赋值表达式=
2.算术表达式+-*/,%,++,--
注意:整数之间的除法做完,是整数,会把余数直接去掉。小数之间的除法做完,则是小数。
小数和整数的混合运算,结果以精度高的为准。
各种运算的混合,也要按照表达式的优先级。
字符与加法的混合,结果是一个字符。
a++的,必须把和a有关的先计算完,才能再把a+1
++a的,必须先把a+1,再进行和a有关的计算
3.比较表达式>,<,>=,<=,==,!=
4.逻辑表达式&&,||
注意:左右语句都必须是逻辑表达式,有true或者false结果的,C#比C更严谨,C里面还可以用一个整型变量表示true,只要不为0就是true,但是在C#中则完全不行,会报错。
5.类型强转
注意:高精度转低精度,精度有损失,必须要用显示的强转符(int),就算是1.00转1也不行,C#更严谨,低精度转高精度不需要。
五.执行顺序
1.顺序执行,如果是函数中的顺序执行,执行完后会执行return语句,就算没有return语句,也会在函数大括号前隐氏地执行return语句返回。
2.条件语句,if(逻辑表达式){},if(逻辑表达式){}else{},if(逻辑表达式){}else if(逻辑表达式){}else{},switch(整数变量/字符变量){case 1:{} break;case 2:{} break;defalut:{}}
注意:switch中的case后面必须带一个break,不像C可以不带,C#更严谨。
3.循环语句,for(初始化,初始化;循环是否继续的条件判断;循环迭代,循环迭代){},do{}while(逻辑表达式),while(逻辑表达式){},
break:终止所以循环,continue:终止本次循环,进行下一次循环
注意:for循环,首先初始化,然后判断是否满足循环条件,如果满足,执行循环体,最后执行循环迭代,接着判断是否满足循环条件...;如果不满足,则退出循环。
for循环的初始化,循环是否继续的条件判断,循环迭代都可以省略。
for循环的循环是否继续的条件判断省略的话就是死循环。
六.函数调用和参数传递(和C最大不同)
C#数据类型:1.基本数据类型 2.引用类型(存的是对象的引用)
注意:1.函数的参数是另外一个变量,函数参数传递只是变量间值的传递,也就是变量和变量之间的赋值
2.但是如果函数参数的类型是引用类型的,当函数返回时,会把原来的引用变量所指的内容改变,因为被赋值的函数引用变量参数也指向了原先引用变量所指向的内容。
七.out的用法(C#和所以语言都不同的一点)
例子
Person p;
p=new Person();
p.name=1;
p.age=10;
create_person(out p);
Debug.Log("p.age=",p.age);//结果等于11
void create_person(out Person p){
p=new Person; //为了区别函数引用变量传递也可以改变原来引用变量所指内容,也就是证明这个person和函数外面那个person不一样,这里故意弄成两个不同的person,如果是平时没有out时传基本类型进来,系统会自动帮我们创建新的变量。
//还有一种更直观的区别函数引用变量传递和out修饰的函数引用变量传递的区别,就是函数引用变量传递的函数中如果把p=null,外面的p依然不为null,而out修饰的函数引用变量传递中把p=null;则外面的那个p就是null。
p.name=0;
p.age=11;
}
//被out修饰的参数,那么在函数内可以直接修改这个变量的值,不管是基础类型的变量还是引用类型的变量。
//我是这样通俗理解的:被out修饰的参数,会把在函数中经过的变化,更新到原来外面的变量,从头到尾就是一个变量被更新了的感觉。
相关文章
- C# Net Core 使用 ClientWebSocket 实现 WebSocket 客户端
- 在C#中使用Irony实现SQL语句的解析
- C#中使用Buffer.BlockCopy()方法将string转换为byte array的方法:
- c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习
- 利用反射快速给Model实体赋值 使用 Task 简化异步编程 Guid ToString 格式知多少?(GUID 格式) Parallel Programming-实现并行操作的流水线(生产者、消费者) c# 无损高质量压缩图片代码 8种主要排序算法的C#实现 (一) 8种主要排序算法的C#实现 (二)
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- C# 字符串拼接性能探索 c#中+、string.Concat、string.Format、StringBuilder.Append四种方式进行字符串拼接时的性能
- C#学习记录——网络编程基础
- C#,入门教程(34)——关于函数的参数之引用(ref)的一点知识与源程序
- 《C#并发编程经典实例》—— 超时
- Visual Studio 基础 之 VS 查看/反编译 C# dll 脚本代码的简单方法
- 《C#零基础入门之百识百例》(七十九)常见和不常见的运算符汇总 -- 示例练习
- C# 一次查询多表,填充DataSet并指定表名
- C#中【pdb】文件
- C#-IO-Path类-path.GetFullPath 获取上级目录实现方法
- C#基础 C#语言发展史
- C#项目类型分三种,Dos(控制台),c/s(客户端与服务器),b/s(浏览器/服务器)