UNITY零基础学习 month1 day15

UNITY零基础学习 month1 day14

  • C#语言基础
    • 枚举
    • 简单枚举
      • 枚举的多选
      • 数据类型转换
    • 类和对象
      • 类和对象
      • 创建类
      • 创建对象
    • 成员变量
      • 值类型与引用类型
    • 字段:存储数据
    • 构造函数
    • this关键字
    • 类数组
    • 类结构

C#语言基础

枚举

简单枚举

  • 列举某种数据的所有取值
  • 作用:增强代码的可读性,限定取值
  • 语法:enum 名字 {值1,值2,值3,值4}
  • 枚举元素默认为int类型,准许使用的枚举类型有byte、sbyte、short、ushort、int、uint、long或者ulong
  • 每个枚举元素都是有枚举值的。默认情况下,第一个枚举的值为0,后面每个枚举的值一次递增1,可以修改值,后面枚举数的值依次递增

枚举的多选

选择多个枚举值
使用运算符**|**(按位或运算),例如:(Info.io | Info.stream)
两个对应的二进制位中有一个为1,则结果为1

条件:

  1. 任意多个枚举值做|(按位或)运算的结果不能与其他枚举值相同
  2. 定义枚举时,使用[Flags]特性修饰(增强代码可读性,标记可多选)

判断标志枚举是否包含指定枚举值
使用运算符**&**(按位与)
00000011 & 00000001 ==》00000001

数据类型转换

//int ==> Enum
PersonStyle style01 = (PersonStyle)2;
//Enum ==> int
int enumNumber = (int)(PersonStyle.Beauty | PersonStyle.Handsome);
//string ==> Enum
PersonStyle style02 = (PersonStyle)Enum.Parse(typeof(PersonStyle), "beauty");
//Enum ==> string
string strEnum = PersonStyle.Handsome.ToString();

类和对象

类和对象

  • 面向对象:一种软件开发的思想,指导程序员如何分析、解决问题
  • 类是一个抽象概念,即为生活中的“类别”
  • 对象是类的具体实例,即归属于某个类别的“个体”
  • 名词类型的共性,作为数据成员
  • 动词类型的共性,作为方法成员

类的具体形式:

namespace day07练习
{
    /// 
    /// 用户类
    /// 
    class User
    {
        //字段
        //属性
        //构造函数
        //方法
    }
}

创建类

语法:
访问级别 class 类名
{
类成员
}
C#中类的所有首字母大写,和方法一样,变量的第一个首字母小写
通常每个类都在一个独立的C#源文件中
创建新的类意味着在当前的项目中产生了一种新的数据类型

类的本质是引用类型,枚举的本质是值类型

创建对象

语法:
类名 引用名;
引用名 = new 构造函数(参数列表);

可以通过在类中创建的方法,来对对象做各种操作
当对象被方法赋值时,是引用类型,当把它赋值给另外一个同类型对象时,赋的是引用

        static void Main(String[] args)
        {
            //声明dog类型的引用
            dog dog01 = new dog();
            //指向dog类型的对象(实例化dog类型对象)
            dog01.SetName("ruben");
            Console.WriteLine(dog01.GetName());
            dog01.SetAge(1);
            Console.WriteLine(dog01.GetAge());

            dog dog02 = dog01;
            dog02.SetName("wendy");
            Console.WriteLine(dog01.GetName());
        }

成员变量

成员变量:定义在类中方法外的变量

特点:

  • 具有默认值
  • 所在类被实例化后,存在堆中,对象被回收时,成员变量从堆中清除
  • 可以与局部变量重名

在方法中想要使用成员变量,就需要使用this

值类型与引用类型

  • 值类型:声明在堆中,数据存储在栈中
  • 引用类型:声明在堆中,数据存储在堆的另一块空间

字段:存储数据

例如:

private int name

属性:保护字段

public string Name{
	//读取时保护
	get
	{return name;}
	//写入时保护 value:要设置的数据
	set
	{this.name = value;}
}

本质就是对字段的读取与写入方法
可以只使用get或者set,变成只读或只写属性
通常一个公有属性和一个私有字段对应
属性只是外壳,实际上操作的私有字段

构造函数

构造函数:提供了创建对象的方式,常常用于初始化类的数据成员

特点:没有返回值 与类同名 创建对象时自动调用(不能手动调用)
如果不希望在类的外部被创建对象,就将构造函数私有化

private Dog(){}

一个类若没有构造函数,那么编译器会自动提供一个无参数构造函数;一个类若具有构造函数,那么编译器不会提供无参数构造函数

public(访问级别) Dog(类名)()
{

}

构造函数如果为字段赋值,属性中的代码块不会执行

public Dog(string name):this()
{
	this.name = name;
}

public Dog(string name,int age):this(name)
{
	this.age = age;
}

可以调用:后面对应的构造函数,例如这里调用的就是无参数的那个

this关键字

  • 表示当前对象的引用
  • 访问当前类成员时,使用this关键字,可以提高代码的可读性;在没有歧义的情况下,也可以省略

类数组

Dog[] dogArray = new Dog[5];
dogArray[0] = dog01;
dogArray[1] = dog02;
dogArray[2] = new Dog("03".10);
dogArray[3] = null;

类结构

//数组初始化必须指定大小
//读写元素 必须通过索引


用户集合类 UserList
{
     public User[] data; // 真正存储用户的字段
     public UserList():this[8]
     {      }
     public UserList(int capacity){  
         data = new User[capacity];
     }

     public void Add(User value){
         int i = 0;
              while(data[i] != null){
             i++;
             if(i == data.length){
                 User[] copy = new User[data.length+1];
                 for(int j = 0;j<data.length;j++){
                     copy[j] = data[j];
                 }
                 copy[j+1] = value;
                 data = copy;
                 return;
             }
         }
        data[i] = value;
         return;
     }
      
     public User GetElements(int index)
     {
        return data[index];
     }
 
 }
 
使用:
 UserList list = new UserList(10);
list.Add(u1);
 list.Add(u2);
list.Add(u3);
 list.Add(u4);
 
 for(int i = 0;i <list.Count;i++)
 {
      User user = list.GetElement(i);
     user.PrintUser();
 }

你可能感兴趣的:(untiy基础学习,unity,c#,游戏引擎)