一、数组

存放同种类型的一组数据,同类+多个

1.定义

int [] int_set;

int_set=new int[10];  //在堆上分配出10个int,int_set是数组的引用变量,指向10个int大小的内存空间。new 类型[容量]

2.访问

数组引用变量名称[索引],int_set[0]=0,int_set[1]=1,int_set[1]=2,访问数组的元素。

数组大小是有限的,所以数组访问千万不能越界,10个元素大小的数组,索引就是0到9,100个元素大小的数组,索引就是0到99。

数组容量一旦确定,就无法再扩展。

索引可以是常量也可以是变量。int_set[index]=5;

3.遍历

访问数组里面的每一个元素

for(int i=0;i<10;i++)

{

  int_set[i]=i+1;

  Debug.Log(int_set[i]);

}

二、String

1.string.Fromat格式化创建一个字符串

string str=string.Fromat("{0} {1} {2}",“xiaoming”,10,"male");

Debug.Log(str);

群发短信//XXX,祝福你新年快乐

for(int i=0;i<10;i++)

{

  string fmr_str="{0}:{1} happy new year";

  Debug.Log(string.Format(fmt_str,i,i));

}

2.字符串相等判断

str="Liming";

if(str.Equals("Liming")){

  Debug.Log("Equals");

}

3.转换大小写

str.ToUpper();//全部转大写

str.ToLower();//全部转小写

三、static的用法

1.static类的静态方法---不需要实例(与类的实例没有任何关系)就可以调用,格式:类名.函数方法名字,全局唯一。

int age;

public void normal()

{

  this.age=0;

}

public static void test()

{

  //由于没有对象实例,不能访问对象的数据成员

  Debug.Log("Person test");

}

//调用

Person p;

p=new Person();

p.normal();//需要类的实例调用

Person.test();//不需要类的实例直接用类名调用

//用途

用于一些只有逻辑,没有对象的计算,比如我们平时用的Math.sum(),Math.sort(),Math.sin(),Math.cos()等等处理纯粹的逻辑。

2.static类的静态变量(类.变量名称)---不需要实例(与类的实例没有任何关系)就可以调用。格式:类名.变量名字,全局唯一

public  static  float PI=3.14F;//存放在数据段上,所有的类都共用同一个内存。在编译的时候静态的内存已经释放出来了,永远不会放弃,全局唯一。

//使用

Person.PI=3.14f;

注意:普通的成员函数,成员变量,可以通过this,来访问实例的数据成员。static修饰的静态变量,静态函数是没有this的,并且不能访问实例的数据,因为它的调用压根就和实例无关。

//内存中的存放位置

在数据段中,全局变量,不可被修改

四、const的用法

const修饰的类的成员变量,在编译的时候确定的常量,一旦把一个变量定义为const,你就再也无法修改,全局唯一。格式:类名.变量名

public (static) const int t=3;

Person.t=4;//语句是错误的,不能修改的

Debug.Log(Person.t);//只能去访问,读取

//用途

在写代码逻辑的过程中,需要用一个有意义的名字来代表一个数IDLE , ATTACK , DEAD , WALK     1,2,3,4

//内存中的存放位置

在数据段中,全局变量,不可被修改

五、readonly的用法

实例化时确定的变量,const修饰的类的成员变量,还有一次修改的机会,这个机会在对象的构造函数里面可以使用,后面就再也不能修改。像性别变量sex,一出生就注定的变量,或者是父母变量,一出生就注定的变量。

每一个实例都有一个readonly变量,和前面的static和const不一样。格式:对象引用变量名.变量名

public readonly int t=4;

public Person()

{

  this.t=5;
}

六、泛型编程

1.首先指明一个泛型类,这东西其实是一种模板。

class Point<T>{

  T xpos;

  T ypos;

}

2.实例化泛型类,指明这个泛型到底是哪种类型Point<int>

Point<int> point=new Point<int>();

Point<float> p_float=new Point<float>();

Point<double> p_double=new Point<double>();

3.编译器会使用模板为我们创建相应的类,这个过程是隐示的。

class Point<int>{

  int xpos;

  int ypos;

}

注意:如果数据成员要做成泛型的,类也要做成泛型的。

七、名字空间的使用

在项目开发的过程中,难免会用同样的类名字,所以就要使用名字空间,名字空间带着开发者很强的烙印。

例子:A公司开发了软件的一部分代码,里面有一个类的名字是pay,B公司开发了软件的另外一部分代码,里面也有一个类的名字是pay,

当最后两家开发公司的代码整合后,如果C用户来使用这一软件,发现,调用pay类的时候会出现冲突,不知道要用谁的pay,这就需要使用名字空间来区分两家公司定义的类。

所以,如果是做底层的开发人员,在把自己写的东西SDK,库,给别人的时候要记得加名字空间。

using UnityEngine;就是Unity的名字空间,带着很强的公司烙印。

就像在福建有个人叫李伟,在广东也有一个人叫李伟,在浙江也有一个人叫李伟,我们之所以可以区分他们,是因为他们的地区不同,用省份进行了分区

1.自定义名字空间:

namespace my_namespace{

  class Person(){

    int xpos;

    int ypos;

  }

}

2.在外面就算也有一个名为Person的类也没关系,因为两者的名字空间不同。

my_namespace.Person person=new my_namespace.Person();

注意:为了不在每个类前面都写一个名字空间,可以使用using my_namespace;

也就是在开头写:

using my_namespace;//意思就是加入一个搜索范围来查找类或方法,

namespace my_namespace{

  class Person(){

    int xpos;

    int ypos;

  }

}

搜索类的定义的过程:

首先会查找当前名字空间也可以理解为当前.cs文件中有没有定义这个类,没有再从第一个using的名字空间范围里开始找起,直到找到处于当前名字空间且与所查找的类的名字相同的类或方法。

关于Unity的C#基础学习(四)的更多相关文章

  1. Python基础学习四

    Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...

  2. Mybatis基础学习(四)—关系映射

    一.模型分析 user和orders user---->orders 一个用户可以创建多个订单,一对多. orders--->user 一个订单只由一个用户创建,一对一.   orders ...

  3. Node.js基础学习四之注册功能

    前言:在Node.js学习(二)和(三)中介绍了如何在Node.js 中获取登录的用户名和密码与数据库进行验证并返回数据给客户端 需求:实现注册功能 为了区分登录和注册是两个不同的请求,在端口后面加上 ...

  4. Salesforce Sales Cloud 零基础学习(四) Chatter

    Chatter是一个Salesforce实时协作应用程序,它允许你的用户一起工作.互相交谈和共享信息,不管用户角色或位置如何,连接.并激励用户在整个组织内高效工作. Chatter 让用户们在 Opp ...

  5. 关于Unity的C#基础学习(三)

    面向对象 一.编码注意 1.每个C#的脚本只有唯一的一个类是继承自MonoBehaviour 2.类的名字要和我们的文件名字一样 3.代码的缩进 个人习惯:在类的内部来访问数据成员/成员函数的时候,用 ...

  6. 关于Unity的C#基础学习(二)

    一.Debug的使用 int a=3; Debug.Log("a="+a); 二.整数的定义 int m; Debug.Log(m);  //C#比C更严谨,没有初始化的变量打印出 ...

  7. Spring基础学习(四)—AOP

    一.AOP基础 1.基本需求      需求: 日志功能,在程序执行期间记录发生的活动. ArithmeticCalculate.java public interface ArithmeticCal ...

  8. Hibernate基础学习(四)—对象-关系映射(上)

    一.映射对象标识符      Java语言按内存地址来识别或区分同一个类的不同对象,而关系数据库按主键值来识别或区分同一个表的不同记录.Hibernate使用对象标识符(OID)来建立内存中的对象和数 ...

  9. Struts2基础学习(四)—类型转换器和数据校验

    一.自定义类型转换器 1.概述      Struts2提供了常规类型转换器,可以用于常用数据类型的转换,但如果目标类型是一个特殊类型,则需要自定义转换器.Struts2 类型转换器实际上都是基于OG ...

随机推荐

  1. es5||es6 - array

    导航目录 /** * javascript - array * * ES5: * join() * push() * pop() * shift() * unshift() * sort() * re ...

  2. 算法笔记_137:二分图的最大匹配(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 何为二分图的最大匹配问题? 引用自百度百科: 首先得说明一下何为匹配: 给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于 ...

  3. Python方法完成农历日历功能代码

    来自 #coding=utf-8 #****************************************************************************** # 下 ...

  4. OpenERP登录页面调整

    在OpenERP的登录页面中,有针对数据库管理的链接,为了安全起见,一般都会通过修改原始的XML来实现隐藏的目的.但这样每次重新安装以后,都要重新修改,很不方便,所以我们可以通过建立一个新模块的方式来 ...

  5. UNIX网络编程卷2进程间通信读书笔记(二)—管道 (1)

    一.管道 管道的名称很形象,它就像是一个水管,我们从一端到水然后水从令一端流出.不同的是这里说的管道的两边都是进程.从一端往管道里写数据,其它进程可以从管道的另一端的把数据读出,从而实现了进程间通信的 ...

  6. Android系统源代码学习步骤

    目前,互联网行业正在朝着移动互联网方向强劲地发展,而移动互联网的发展离不开背后的移动平台的支撑.众所周知,如今在移动平台市场上,苹果的iOS.谷歌的Android和微软的Windows Phone系统 ...

  7. 【JS】jQuery设置定时器,访问服务器(PHP示例)配合微信、支付宝原生支付,跳转web网页

    废话不多说,直接上代码: 把下面的js放在html的</body>即可 <!-- 设置页面定时器,3秒查询一次数据库该订单状态,ok就跳走 --xzz1115> <scr ...

  8. BeanUtils的介绍使用

    BeanUtils工具 在实际的开发中我们经常需要将用户的录入的数据进行封装为对象,那么如果使用反射和内省技术就会变得吃力.因此本节主要给大家讲解一个开源的操作JavaBean的一个工具即BeanUt ...

  9. 摘:C++:用ADO操作数据库的方法步骤

      ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口. _ConnectionPtr接口返回一个记录集或一个空指针 ...

  10. (一)Mina源代码解析之总体架构

    Apache Mina Server 是一个网络通信应用框架.也就是说,它主要是对基于TCP/IP.UDP/IP协议栈的通信框架(当然,也能够提供JAVA 对象的序列化服务.虚拟机管道通信服务等).M ...