gpt4 book ai didi

c#对象被奇怪地删除

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:39 24 4
gpt4 key购买 nike

此代码在按下按钮后执行。

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using xnaWindow.FormUI;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace xnaWindow.MathClass
{
public class Math_Vector
{
private Vector3 vectorA;
private Vector3 vectorB;
private Vector3 vectorR;
private List<float> vResult;

VertexPositionColor[] verts1,verts2,verts3;

public void calculate(List<float>v1,List<float>v2)
{
Console.WriteLine("calculating..");

vResult = new List<float>();
vectorA = new Vector3(v1.ElementAt(0), v1.ElementAt(1), v1.ElementAt(2));
vectorB = new Vector3(v2.ElementAt(0), v2.ElementAt(1), v2.ElementAt(2));

//this is the manual calculation of vector addition
float xRes = v1.ElementAt(0) + v2.ElementAt(0);
float yRes = v1.ElementAt(1) + v2.ElementAt(1);
float zRes = v1.ElementAt(2) + v2.ElementAt(2);

vectorR = new Vector3(xRes,yRes,zRes);
//vectorR = vectorA + vectorB;

verts1 = new VertexPositionColor[2];
verts1[0] = new VertexPositionColor(new Vector3(0, 0, 0), Color.Black);
verts1[1] = new VertexPositionColor(vectorA, Color.Black);

verts2 = new VertexPositionColor[2];
verts2[0] = new VertexPositionColor(new Vector3(0, 0, 0), Color.Black);
verts2[1] = new VertexPositionColor(vectorB, Color.Black);

verts3 = new VertexPositionColor[2];
verts3[0] = new VertexPositionColor(new Vector3(0, 0, 0), Color.Black);
verts3[1] = new VertexPositionColor(vectorR, Color.Black);

int i = 0;
//this is for console debug
foreach (float va in v1)
{
Console.WriteLine("adding " + va.ToString() + v2.ElementAt(i).ToString());
vResult.Add(va+v2.ElementAt(i));
i++;
}

}

public Vector3 getV1(){return vectorA;}
public Vector3 getV2(){return vectorB;}
public Vector3 getV3(){return vectorR;}

public VertexPositionColor[] getVertex1( )
{
return verts1;
}
public VertexPositionColor[] getVertex2()
{
return verts2;
}
public VertexPositionColor[] getVertex3()
{
return verts3;
}
}
}

奇怪的是,verts1, vertes2,verts3 在退出函数后总是被清空。所以我在执行后调用的 getters 方法总是返回 null。

我该怎么办?

这是我对 setter/getter 的呼吁

math.calculate(v1, v2);
verts1 = math.getVertex1();
verts2 = math.getVertex2();
verts3 = math.getVertex3();

最佳答案

如果非要我猜的话,我很确定您使用的是结构而不是类。很可能您只是像对待类一样对待结构实例,而忘记了它们是按值复制的。所以你可能在某个地方得到一个未初始化的(你看到的是“NULL”)。

关于c#对象被奇怪地删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1552165/

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