轩辕kuku
论坛版主
论坛版主
  • UID14
  • 粉丝6
  • 关注1
  • 发帖数78
  • 社区居民
  • 原创写手
阅读:702回复:0

C#基础开发——变量与属性的定义(1)

楼主#
更多 发布于:2016-05-14 12:26
在目前Unity3D开发中,其支持的脚本语言有C# Javascript 以及Boo,目前大部分开发者选择的脚本语言为C#,这里有篇帖子做了对比,http://blog.csdn.net/pizi0475/article/details/7647589;个人觉得C#比较好学,容易上手,库文件和资源都比较丰富。

一个C#类从数据定义开始,也就是变量的定义和属性的定义。
常用的变量有整型 浮点类型,字符类型和布尔类型。
其中整型的划分又有八种:但一般开发中用到int就够了,在socket通讯数据包转换会用到的比较多,很多按位和字节来算。
sbyte 8位有符号的整数System.SByte
short16位有符号的整数System.Int16
int32位有符号的整数System.Int32
long64位有符号的整数System.Int64
byte8位无符号的整数System.Byte
ushort16位无符号的整数System.UInt16
unit32位无符号的整数System.UInt32
ulong64位无符号的整数System.UInt64
浮点类型:注意在定义该类型的时候在后面加f,比如:float i = 2.0f;还有类型decimal是更高精度的浮点数,一般用于财务计算
float32位单精度浮点数System.Single
double64位双精度浮点数System.Double
布尔类型:
booltrue or  falseSystem.Boolean
字符类型
char16位字符System.Char

除了上面的这些,还有string和Object,因为上面的这些类型都为值类型,而string和Object为引用类型。初学者会在使用的过程中有点迷糊,值类型是存储在堆栈中,引用类型是存在托管堆,这是概念区别。来点代码看看:

Vector x,y;
x = new Vector();
x.Value =30;
y =x;
Debug.Log(y);
y=50;
Debug.Log(x);
打印结果是:30 50;可以看到x,y都引用的是同一个对象,对他们其中一个的操作都会影响到另外一个,Vector是引用类型。大家在Unity3d里面可能找不到Vector这个,因为缺少命名空间。那来一个可以在Unity3D中测试的,常用的list也是引用类型测试代码
List<int> list1, list2;
   // Use this for initialization
   void Start () {
       list1 = new List<int>();
       list1.Add(1);
       list1.Add(2);
       list1.Add(3);
       list1.Add(4);
       list1.Add(5);
       list2 = list1;
       foreach (int i in list2)
           Debug.Log(i);
       list2.Add(6);
       foreach (int k in list1)
           Debug.Log(k);
   }
打印结果:

图片:11.png



注意:对于string的引用类型有一点区别,就是在对string赋值的时候就会创造一个全新的string对象,并不会影响之前的。那么如果我们的代码中有大量的对string的赋值操作,这将会消耗比较多的内存,直到被系统GC掉,所以存在大量string操作的时候使用StringBuilder,(http://jingyan.baidu.com/article/3065b3b6eb7fdbbecff8a494.html)测试代码:
string s1= "aaa";
string s2 = s1;
Debug.Log(s1);
Debug.Log(s2);
s1 = "bbb";
Debug.Log(s1);
Debug.log(s2)


打印出来的是:

图片:22.png










欢迎分享

游客

返回顶部