gpt4 book ai didi

C# 结构 : Unassigned local variable?

转载 作者:IT王子 更新时间:2023-10-29 04:38:11 25 4
gpt4 key购买 nike

来自documentation :

Unlike classes, structs can be instantiated without using a new operator.

那么为什么我会收到这个错误:

Use of unassigned local variable 'x'

当我尝试这样做时?

        Vec2 x;
x.X = det * (a22 * b.X - a12 * b.Y);
x.Y = det * (a11 * b.Y - a21 * b.X);

Vec2 x 是一个结构吗?

最佳答案

那么,X 和 Y 是属性(而不是字段)吗?如果是这样,那就是问题所在。在 x 中的所有字段都被明确分配之前,您不能调用任何方法或属性。

例如:

public struct Foo
{
public int x;
public int X { get { return x; } set { x = value; } }
}

class Program
{
static void Main(string[] args)
{
Foo a;
a.x = 10; // Valid

Foo b;
b.X = 10; // Invalid
}
}

Vec2是你自己的类型吗?您有权访问所涉及的字段,还是只能访问属性?

如果它是您自己的类型,我会强烈敦促您尝试坚持使用不可变结构。我知道托管 DirectX 有一些可变结构,以尽可能接近最佳性能,但这是以出现这种奇怪情况为代价的——老实说,情况更糟。

我个人会为该结构提供一个采用 X 和 Y 的构造函数:

 Vec2 x = new Vec2(det * (a22 * b.X - a12 * b.Y),
det * (a11 * b.Y - a21 * b.X));

关于C# 结构 : Unassigned local variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2069435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com