C# 将实例化的类变量作为参数传递 P> >在C++中,下面的代码是合法的,广泛使用: ObjectType myObject = ObjectType(vector3(10, 9, 3), vector3(40, 0, 0), vector3());

C# 将实例化的类变量作为参数传递 P> >在C++中,下面的代码是合法的,广泛使用: ObjectType myObject = ObjectType(vector3(10, 9, 3), vector3(40, 0, 0), vector3());,c#,C#,我使用构造函数作为参数传递给构造函数,以避免创建一堆临时变量,我稍后会扔掉它们 如果我在C#中尝试这个,如下所示: ObjectType myObject = new ObjectType(vector3(10, 9, 3), vector3(40, 0, 0), vector3()); 我得到了编译器错误 错误CS0118:“myObject”是一个“类型”,但像“变量”一样使用。 我在如何使用C#时犯了一个根本性的错误,或者我可以做些变通吗 (假设vector3类有一个不接受任何参数的默认

我使用构造函数作为参数传递给构造函数,以避免创建一堆临时变量,我稍后会扔掉它们

如果我在C#中尝试这个,如下所示:

ObjectType myObject = new ObjectType(vector3(10, 9, 3), vector3(40, 0, 0), vector3());
我得到了编译器错误

错误CS0118:“myObject”是一个“类型”,但像“变量”一样使用。

我在如何使用C#时犯了一个根本性的错误,或者我可以做些变通吗

(假设vector3类有一个不接受任何参数的默认构造函数和一个接受三个整数的构造函数)

我使用构造函数作为参数传递给构造函数以避免 必须创建一堆临时变量,我稍后会扔掉

您没有创建和传递临时对象

在创建以下对象时使用
new
关键字:

ObjectType myObject = new ObjectType(new vector3(10, 9, 3), new vector3(40, 0, 0), new vector3());
                                   //^^^^

听起来您有一个名为
myObject
C++的类,其行为类似于C#中的值类型。您通常也会使用struct关键字在C#中将vector3声明为值类型。C语言试图隐藏差异,但仍然必须使用新关键字。
ObjectType
接受三个
int
s?vector3不是
int
,对吗?如果
vector(int,int,int)
返回了
ObjectType
的构造函数中预期的参数?