C# 从引用更改值?
我正在尝试通过引用更新图片。我知道问题发生在哪里,但我很好奇是否有可能在C#中做类似的事情 我正在制作一个系统,人们可以在侧面与图片进行对话,并在调用图片的异步加载时加载一个“加载”图像(因为它可能很大,加载需要一点时间)。所有这些都是有效的,我只是好奇我是否可以使用图片的变量来更新图片,或者我是否应该引用对象(因为对象可能是三种不同的对象之一,取决于用户所在的位置,但它总是引用图片) 这都是我试图尽可能明显地命名的伪代码C# 从引用更改值?,c#,variables,asynchronous,reference,loading,C#,Variables,Asynchronous,Reference,Loading,我正在尝试通过引用更新图片。我知道问题发生在哪里,但我很好奇是否有可能在C#中做类似的事情 我正在制作一个系统,人们可以在侧面与图片进行对话,并在调用图片的异步加载时加载一个“加载”图像(因为它可能很大,加载需要一点时间)。所有这些都是有效的,我只是好奇我是否可以使用图片的变量来更新图片,或者我是否应该引用对象(因为对象可能是三种不同的对象之一,取决于用户所在的位置,但它总是引用图片) 这都是我试图尽可能明显地命名的伪代码 Class AsyncLoad() { Picture pic; str
Class AsyncLoad()
{
Picture pic;
string location;
void AsyncLoadStart(string picLocation, Picture picRef)
{
pic = picRef;
location = picLocation;
AsyncLoad();
}
void AsyncLoad()
{
pic = picRef;
Picture picLoading = PictureFromFile(picLocation);
while (picLoading.IsLoad)
Wait();
pic = picLoading; //issue is here
}
}
问题是,它只是简单地删除旧pic的位置,并使pic引用picLoading。我只是好奇,是否有一种方法可以在不参考图片所附对象的情况下做我想做的事情
澄清:我正在尝试在将picRef加载到pic时更新picRef。我假设我必须保存对picRef分配给的对象的引用,并直接更新picRef。我只是好奇是否有其他方法,比如如果不是异步的话ref关键字将如何工作
编辑2:我使用这些图形的程序迫使我使用两种不同的方法来加载,正如我在上面所阐明的,否则我只会使用ref关键字。我更新了伪代码以表明这一点(这是一个游戏环境,不允许我直接运行异步代码,而是通过下一帧发生的更新调用)。如果我可以把ref放在pic上,那就很容易了。如果您的目标是分配给原始参数,这似乎是基于代码片段的情况,那么您应该在声明中使用关键字
void AsyncLoadStart(string picLocation, ref Picture picRef)
我不太明白。你能把整件事重新表述一下吗?它是否与passbyvalue/passbyreference相关?那类事情?当然它会删除旧值,你把它分配给一个新值!我也不明白这个问题。用edit注释:我正在尝试使pic=picLoading在加载完成时更新picRef。我想看看是否有一种方法可以做到这一点,而无需引用picRef附加到的对象并直接从该对象更新图片。我想我必须引用picRef的对象,但我想看看是否有不这样做的方法。尝试尽可能清楚地说明这一点,如果不清楚,则表示抱歉。请在picRef参数之前尝试ref关键字。异步加载程序的工作方式(我没有正确引用此选项)需要引用外部存储的pic。我应该编写它,以便asyncloaderstart还标记另一个方法(asyncLoader),该方法实际将picLoading加载到pic中。不管怎样,我只是假设这是一个不可能的问题,并且已经更新了我的代码来使用这个对象。我将把这个作为答案,因为它对3/4的人来说已经足够好了。我真正想要的是指针,直到我写了这一切并去了“Durr”之后才想到它们。C++中没有编程,不考虑指针作为第一个问题^ ^ ^ ^ f的问题将对几乎所有其他人都适用。