c# - 为什么vector3 NewPosition =(1,1,1)无效
问题描述
为什么是命令行
vector3 NewPosition = (1,1,1);
是无效的?虽然命令行有效
Vector3 NewPosition = new Vector3(1,1,1);
为什么使用下面的命令行,不使用“new”这个词就被接受了?不是transform.position也包含(x,y,z)的3个值吗?
Vector3 NewPosition = transform.position
写“Vector3 NewPosition”是不是已经把“NewPosition”识别为“Vector3”类型数据的内存存储区了?就像 int a=1? 我很迷失在发现差异。
解决方案
在 C# 中,只有某些类型可以在不使用new
关键字的情况下通过简单地为它们分配一个值来实例化。
在这些情况下,您可以简单地 A) 声明您的变量,B) 为结构分配一个值/一些值,然后 C) 使用它。
public struct MyStruct
{
public float X;
public float Y;
public float Z;
}
public class Usage
{
public static void Test()
{
MyStruct myStruct;
myStruct.X = 1;
myStruct.Y = 2;
Console.WriteLine(myStruct.X);
Console.WriteLine(myStruct.Y);
//Console.WriteLine(myStruct.Z); causes an error, since Z is still unassigned
}
}
C# 9使new
关键字 target-typed 允许省略说明用于创建的明显数据类型。
List<string> myList = new();
// instead of
List<string> myList = new List<string>();
推荐阅读
- excel - 如果 x 在其他列中,Excel 会更改列的颜色
- azure - Azure Pipeline Need to pass the power shell output to Kubernetes config map 似乎 Kubernetes 任务根本没有读取变量
- azure - LUIS.AI 门户不断将预测端点从调度程序模型恢复为启动程序,并完全解除与端点的关联
- reactjs - 错误:操作必须是普通对象。但我没有使用异步调用
- python - 是否可以更高效、更快地解析这个字典列表?
- python - 'sqlite3.Connection' 对象没有属性 'backup'
- r - 使用 data.table 将列从长格式折叠到宽格式
- r - 如何将字符列表与R中的部分字符串匹配?
- python - 熊猫多索引数据框 - 插入新列和子行的数据仅在列视图中可见?
- regex - 检查数字序列的正则表达式(0到9)