UNITY C# 数据类型

通用类型系统

C#中,变量是值还是引用仅取决于数据类型

所有的数据类型都是对象。因为它们具有自己ide方法和属性

int int_value = 101;

//调用*int_value*的比较方法与整型*2*进行进行比较int_value.CompareTo(2);//在控制台输出Console.WriteLine(int_value.ToString());

值类型

内置值类型

整型

sbyte(System.SByte)

short(System.Int16)

int(System.Int32)

long(System.Int64)

byte(System.Byte)

ushort(System.UInt16)

uint(System.UInt32)

ulong(System.UInt64)

char(System.Char)

浮点型

float (System.Single)

double(System.Double)

高精度类型

decimal(System.Decimal)

bool(System.Boolean)

用户定义的值类型

结构体类型(派生于System.ValueType)

枚举类型结构体类型(派生于System.Enum)

可空类型结构体类型(派生于System.Nullable泛型结构体)

C#的所有值类型均隐式派生自System.ValueType;

判断是否为值类型

Type.IsValueType

引用类型

数组(派生于System.Array)

用户可以自定义的引用类型

类:class(派生于System.Object)

接口:interface

委托类型:delegate(派生于System.Delegate)

字符串:string(System.String的别名)

Lambda表达式

数组类型

值类型数组

int[] int_array = new int[10];

在堆内存中一次初始化10个int类型的存储空间

自动初始化这10个元素

将10个元素存储到刚刚分配的内存空间内

引用类型数组

object[] obj_array = new object[10];

在堆内存中分配一次空间

不会自动初始化任何元素

obj_array[i]都是null

当有代码初始化某个元素时,对应元素的存储空间会分配在堆内存上

obj_arr[i]=new object();

内存部署

堆内存上存储了所有的引用类型

object item = new objct();

new关键字在堆内存中分配内存空间,并且返回该内存空间的地址

item存储分配后返回的内存地址

语法

结构体

关键字struct定义

publicstructLORect  {privatefloatx;privatefloaty;privatefloatwidth;privatefloatheight;  }

构造函数

publicLORect(floatx,floaty,floatwidth,floatheight){this.x = x;this.y = y;this.width = width;this.height = height;    }

不允许重载无参构造函数

属性

publicfloatX{set{this.x =value;          }get{returnthis.x;          }      }

定义变量

LORect frame = new LORect(0f,0f,100f,100f);

枚举

关键字enum定义

publicenumLOControlType{LOControlTypeNormal=0,LOControlTypeHighlight=1,LOControlTypeDisable=2,    }

定义变量

LOControlType type = LOControlType.LOControlTypeNormal;

父类

关键字class定义

public class LOPerson { private string name; private int age; }

构造函数

public LOPerson(){}

public LOPerson(string name){this.name = name;}

public LOPerson(string age){this.age = age;}

多个参数的构造函数

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

自定义函数

publicvoidSayHi(){      Console.WriteLine (this.name + “: Hello”);    }

析构函数

~LOPerson()    {this.name =null;this.age =0;    }

在析构函数中,将引用类型成员变量置为null,内存处理

在析构函数中,将值类型成员变量置为默认值,程序逻辑安全

子类

关键字class定义

publicclassLOStudent:LOPerson{privatefloatscore;        }

构造函数

基于父类无参的构造函数

publicLOStudent(floatscore):base(){this.score = score;    }

public LOStudent(int age):base(age){}

在构造函数的继承中,都会先调用父类的构造函数

自定义函数

publicvoidSayHello(){base.SayHi();      Console.WriteLine (“this.SayHi”);    }

在自定义函数中,调用父类的某个函数要用到base关键字

析构函数

~LOStudent()    {this.score =0f;    }

子类和父类的析构函数的执行顺序

1.自动调用子类的析构函数

2.自动调用父类的析构函数

不需要特别语法指名

特性

关键字Attribute定义

[AttributeUsage(AttributeTargets.Property)]publicclassLOTypeAttribute:Attribute{publicstringType{set;get;}    }

特性的用法

publicclassLOPeople{      [LOType(Type=“NoHealthy”)]publicstringhobby{set;get;}    }

获取特性的值

PropertyInfo item = property_list[0];      LOTypeAttribute attribute = (LOTypeAttribute)Attribute.GetCustomAttribute(item,typeof(LOTypeAttribute));          Console.WriteLine (attribute.Type);

反射

命名空间

using System.Reflection;

获取Type

LOPeople people =newLOPeople();    people.hobby = “Smoke”;        Type p_type = people.GetType();

属性(PropertyInfo)

获取属性列表

PropertyInfo[] property_list = p_type.GetProperties();

获取指定属性

PropertyInfo property = p_type.GetProperty(“hobby”);

方法

获取people对象的属性值 .GetValue()

property.GetValue(people,null);

设置people对象的属性值 .SetValue()

property.SetValue(people,”Drink”,null);

方法(MethodInfo)

获取方法列表

MethodInfo[] method_list = p_type.GetMethods();

获取指定方法

MethodInfo method = p_type.GetMethod(“SayHi”);

方法调用

Invoke()

方法的参数列表

method.GetParameters();

方法的返回值

method.ReturnType;

成员(MemberInfo)

获取成员列表

MemberInfo member_list = p_type.GetMembers();

获取指定成员

MemberInfo[] member= p_type.GetMember(“name”);

构造函数(ConstructorInfo)

获取构造函数列表

ConstructorInfo[] constructor_list = p_type.GetConstructors();

获取指定构造函数

ConstructorInfo constructor = p_type.GetConstructor(new Type[]{typeof(int)});

委托

关键字delegate

public delegate void LODataSource(List data_list);

定义委托类型变量

LODataSource dataSource;

委托类型变量赋值

Lambda表达式赋值

dataSource = (List data_list)=>{foreach(intitemindata_list)              {                  Console.WriteLine (item.ToString());              }    } ;

函数地址赋值

voidProcessData(List data_list){foreach(intitemindata_list)      {          Console.WriteLine (item.ToString());      }    }

dataSource = new LODataSource(ProcessData);

dataSource = ProcessData;

接口

关键字interface

publicinterfaceLOInterface{voidSayNice();    }

接口中只能声明函数,不能实现函数

接口的用法

publicclassLOTeacher:LOInterface{privatestringname;publicvoidSayNice(){          Console.WriteLine (this.name + “: Nice”);      }    }

publicclassLOManager:LOInterface{privatestringname;publicvoidSayNice(){          Console.WriteLine (this.name + “: Nice”);      }    }

接口的好处

为多个不同的类提供相同名称的方法接口,提供不同的实现过程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容