您的位置:首页 > 财经 > 产业 > 病毒几年可以消失_东莞网络推广网络推广_搜索大全引擎地址_专门看网站的浏览器

病毒几年可以消失_东莞网络推广网络推广_搜索大全引擎地址_专门看网站的浏览器

2024/12/23 11:50:56 来源:https://blog.csdn.net/qq_36303853/article/details/143992555  浏览:    关键词:病毒几年可以消失_东莞网络推广网络推广_搜索大全引擎地址_专门看网站的浏览器
病毒几年可以消失_东莞网络推广网络推广_搜索大全引擎地址_专门看网站的浏览器

文章目录

      • 1. **隐式转换(Implicit Casting)**
      • 2. **显式转换(Explicit Casting)**
      • 3. **类型转换(`as` 和 `is`)**
        • `as` 关键字
        • `is` 关键字
      • 4. **`Convert` 类**
      • 5. **`Parse` 和 `TryParse`**
        • `Parse`
        • `TryParse`
      • 6. **自定义类型转换**
        • 隐式转换
        • 显式转换
      • 7. **Unity 特定类型转换**
        • `Vector3` 和 `Vector2` 之间的转换
        • `GameObject` 和 `Transform` 之间的转换
      • 总结
  • 完结

在 Unity 和 C# 中,不同类型的变量转换有多种方式,具体取决于类型之间的关系。以下是一些常见的类型转换方式:

1. 隐式转换(Implicit Casting)

当两种类型之间的转换是安全的,编译器会自动进行转换。例如,从 intfloat,因为 float 类型能够容纳 int 类型的所有值。

int intValue = 10;
float floatValue = intValue;  // 隐式转换:int 到 float

2. 显式转换(Explicit Casting)

如果类型之间的转换可能会丢失数据,或者不兼容,编译器会要求你进行显式转换。显式转换使用强制类型转换((类型))来进行。

float floatValue = 10.5f;
int intValue = (int)floatValue;  // 显式转换:float 到 int(会丢失小数部分)

3. 类型转换(asis

在 C# 中,有两种常用的类型转换方式:asis

as 关键字

as 用于将一个对象尝试转换为另一个类型。如果转换成功,它会返回目标类型的对象,否则返回 null

object obj = "Hello, world!";
string str = obj as string;  // 如果 obj 是 string 类型,则转换成功,否则 str 为 null
is 关键字

is 用于检查对象是否可以转换为目标类型。如果是,则返回 true,否则返回 false

object obj = "Hello, world!";
if (obj is string)
{string str = (string)obj;  // 确保类型为 string 后可以安全转换
}

4. Convert

对于一些常见类型之间的转换(比如从 intdouble,从 stringint),C# 提供了 Convert 类。它支持从一种类型转换为另一种类型。

string numberString = "123";
int number = Convert.ToInt32(numberString);  // 从 string 到 intfloat floatNumber = Convert.ToSingle(numberString);  // 从 string 到 float

Convert 进行的转换通常比显式转换更安全,能够处理更多的类型转换,比如将 null 转换为零等。

5. ParseTryParse

对于一些类型(比如字符串到数字),可以使用 ParseTryParse 方法进行转换:

Parse

Parse 用于将字符串转换为目标类型,成功时返回目标类型,失败时抛出异常。

string str = "123";
int intValue = int.Parse(str);  // 如果字符串不是有效的数字,则抛出异常
TryParse

TryParse 会尝试将字符串转换为目标类型。如果转换失败,返回 false,而不会抛出异常。

string str = "123";
if (int.TryParse(str, out int intValue))
{// 成功转换Debug.Log(intValue);
}
else
{// 转换失败Debug.LogError("转换失败");
}

6. 自定义类型转换

如果你有自己的类或结构体,可以通过重载 implicitexplicit 运算符来定义如何将自定义类型转换为其他类型。

隐式转换
public class MyClass
{public int Value;public static implicit operator int(MyClass obj){return obj.Value;  // 自动将 MyClass 转换为 int}
}MyClass myObj = new MyClass() { Value = 10 };
int value = myObj;  // 隐式转换:MyClass 转换为 int
显式转换
public class MyClass
{public int Value;public static explicit operator float(MyClass obj){return (float)obj.Value;  // 显式将 MyClass 转换为 float}
}MyClass myObj = new MyClass() { Value = 10 };
float value = (float)myObj;  // 显式转换:MyClass 转换为 float

7. Unity 特定类型转换

Unity 中经常会遇到一些与 Unity 引擎相关的类型转换,特别是在 Vector3TransformGameObject 等类型之间转换时。以下是一些常见的 Unity 特定类型转换:

Vector3Vector2 之间的转换

如果你需要将 Vector3 转换为 Vector2(忽略 z 轴),或者将 Vector2 转换为 Vector3,可以这样做:

Vector3 vector3 = new Vector3(1, 2, 3);
Vector2 vector2 = new Vector2(vector3.x, vector3.y);  // 只取 x, yVector2 vector2b = new Vector2(4, 5);
Vector3 vector3b = new Vector3(vector2b.x, vector2b.y, 0);  // 默认为 z = 0
GameObjectTransform 之间的转换

在 Unity 中,每个 GameObject 都有一个 Transform 组件。你可以通过以下方式访问它:

GameObject myObject = new GameObject();
Transform transform = myObject.transform;  // 获取 GameObject 的 Transform 组件// 反向操作:通过 Transform 获取 GameObject
GameObject myObject2 = transform.gameObject;

总结

  • 隐式转换:适用于可以安全转换的类型。
  • 显式转换:当转换可能丢失数据时,需要使用强制转换。
  • asis:用于类型检查和安全转换。
  • Convert:用于类型之间的常见转换。
  • ParseTryParse:用于字符串与数字类型之间的转换。
  • 自定义类型转换:可以通过运算符重载自定义类型之间的转换。
  • Unity 特定转换:特别针对 Unity 中常见的类型(如 Vector3TransformGameObject)的转换。

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com