C# - 在整个项目中可访问的变量和列表

Posted

技术标签:

【中文标题】C# - 在整个项目中可访问的变量和列表【英文标题】:C# - Variable and List accessible in whole project 【发布时间】:2021-12-30 02:45:46 【问题描述】:

是否可以使整个项目都可以访问变量或项目列表? 我的程序在一个视图中选择了一个对象,并且我想访问/更改另一个视图。

我知道这不是最好的解决方法,为此使用 MVVM 模式会更好,但对于一个或两个变量/列表的简单用例来说,正确实现这一点似乎需要付出很大的努力。

【问题讨论】:

为什么不使用单例模式? 使用全局变量会妨碍你编写好的测试。 为什么从一个视图转换到另一个视图的东西不能同时传达必要的数据?听起来您正在寻求建立那种“我登录并看到别人的帐户”的安全风险 OP 意味着,我认为,C# 而不是直接使用Banana 需要在BananaTree 中创建Monkey,在Tropics 中,在@987654327 中的ClimaticZone @ 仅访问 Banana。使用全局变量不是好方法,但对于简单的项目或家庭作业 - 为什么不呢? @NHQue 看看***.com/questions/56847571/… 【参考方案1】:

可以通过多种方式共享数据。

一种有趣的方法是缓存数据,例如:https://docs.microsoft.com/en-us/dotnet/desktop/wpf/advanced/walkthrough-caching-application-data-in-a-wpf-application?view=netframeworkdesktop-4.8

我建议不要使用任何全局变量,我也建议不要使用静态变量,因为您可能会敞开心扉在用户之间共享数据。

在这个例子中,当你需要数据时,你检查它是否在缓存中,如果没有,你从任何地方加载它(db,file,api,无论你的源是什么),然后你只需从随时随地缓存。

如果您需要更新它,请确保将其更新为您拥有的任何存储机制,然后重新加载缓存。这是在需要更新时保持同步的好方法,而不会使应用程序、测试和维护复杂化。

【讨论】:

以上是关于C# - 在整个项目中可访问的变量和列表的主要内容,如果未能解决你的问题,请参考以下文章

添加一个变量以在整个解决方案中访问

foreach 某些项目在列表框中 - Winform,C#

为啥我们需要将 Swift 类标记为 `public` 或 `open` 以使其在 Objective-C 框架项目中可访问?

循环访问整个 Access 2010 列表框

使用 LINQ 根据 C# 中的属性值搜索嵌套在另一个列表中的列表中的项目?

在 C# 中,我应该按值传递参数并返回相同的变量,还是按引用传递?