在 .NET MAUI 应用中保留导航参数

Retaining navigation parameter in .NET MAUI app

提问人:Sam 提问时间:11/17/2023 更新时间:11/21/2023 访问量:44

问:

我想完全了解 .NET MAUI 应用中的行为。

比方说,我将一个对象作为导航参数传递给我,并使用数据来显示一些信息。从那里,我转到详细信息页面,例如,我将对象作为导航参数传递到详细信息页面。CustomerCustomerProfilePage.xamlCustomerTransactionsPage.xamlCustomer

我的问题是:当我通过点击返回图标返回时,我不会将任何内容传回,但它仍然有数据。CustomerProfilePage.xamlCustomerTransactionsPage.xamlCustomerProfilePage.xamlCustomer

这些数据究竟来自哪里?

我假设它已经在导航堆栈中,我只是把它放在上面。当我回来时,.NET MAUI 只是从堆栈中提取,它有一种内置的方式来保留传递这些页面的参数数据。这是正确的吗?如果不是,究竟发生了什么,.NET MAUI 从哪里获取数据?CustomerProfilePage.xamlCustomerTransactionsPage.xamlCustomerProfilePage.xamlCustomer

毛 伊 岛

评论

3赞 Jason 11/17/2023
C# 通过引用传递对象。如果两个页面都引用某个类的同一实例,则它们都将看到另一个页面所做的更改
0赞 Sam 11/18/2023
更具体地说,我的问题是关于对象何时被丢弃。是不是只要一个保留在导航堆栈中,它的导航参数就会保留在内存中?我试图清楚地了解导航参数的生命周期。ContentPage

答:

0赞 Jessie Zhang -MSFT 11/21/2023 #1

这取决于 GC。未收集的对象将被标记为可收集。当对象被收集时,取决于 ;如果没有内存压力,则在应用程序结束之前可能永远不会收集它。reachableGC

需要注意的是,规则是 ,而不是没有指向它的引用,这是不一样的。Object is not reachable

有关详细信息,请查看文档:垃圾回收