zoukankan      html  css  js  c++  java
  • 关于Unity的C#基础学习(四)

    一、数组

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

    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的名字空间范围里开始找起,直到找到处于当前名字空间且与所查找的类的名字相同的类或方法。

  • 相关阅读:
    git config (21)
    狗狗染头,一举天下成名
    K2使用总结K2简介
    K2使用总结流程设计
    如何组建开发团队谈面试
    如何组建开发团队谈谈团队组成
    如何组建开发团队谈招聘中的牛人
    作业题有感
    js对象学习笔记Function类型和对象
    非常认同的《SEO优化大全》
  • 原文地址:https://www.cnblogs.com/HangZhe/p/6817017.html
Copyright © 2011-2022 走看看