c#中的值类型和引用类型
# 起因
今天在开发ui动画的时候 我将Vector3 scaleFactor = transform.localScale; 然后我再赋值transform.localScale=Vector3.zero; 然后我发现scaleFactor和transform.localScale的值居然都不同 我想难道是深拷贝吗? vector3不应该是引用类型吗? 一系列的疑问涌上心头。。。如是开始问ai和百度终于发现了c#中的引用类型和值类型其实和js还是有一点差别的,其中就是c#里多了一个结构体类型。
# 结论
C#中的结构体是一种独特的值类型,而JavaScript没有类似的结构体概念。
# C#的值类型
布尔类型(bool)
字符类型(char)
整数类型(byte、sbyte、short、ushort、int、uint、long、ulong)
浮点数类型(float、double、decimal)
枚举类型(enum)
结构体类型(struct)
# unity中的值类型
- 向量类型(Vector2、Vector3、Vector4)---结构体
- 颜色类型(Color、Color32) --结构体
- 矩阵类型(Matrix4x4)---结构体
- 四元数类型(Quaternion)---结构体
- 边界框类型(Bounds)--结构体
- 射线类型(Ray)---结构体
- 平面类型(Plane) ---结构体
- 时间类型(TimeSpan)---结构体
- 存储本次触摸(touch)---结构体
# 什么是结构体
结构体是一种复合数据类型。它和类很像,你可以用相同的方式定义域和方法。下面的例子定义了一个结构体和一个类,它们几乎是一样的
public struct PointA
{
public int x;
public int y;
}
public class PointB
{
public int x;
public int y;
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
编辑 (opens new window)
上次更新: 2024/08/23, 14:13:02