问题标签 [properties]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
6603 浏览

c# - ConfigurationManager.AppSettings 性能问题

我计划将我所有的配置设置存储在我的应用程序的 app.config 部分(使用ConfigurationManager.AppSettings类)。当用户使用应用程序的 UI 更改设置时(单击复选框、选择单选按钮等),我计划将这些更改写入AppSettings. 同时,当程序运行时,我计划AppSettings从一个不断处理数据的进程中不断访问。通过 UI 更改设置需要实时影响数据处理,这就是为什么进程会AppSettings不断访问的原因。

就性能而言,这是一个好主意吗?在编写 .Net 应用程序时,使用AppSettings应该是存储和访问配置设置的“正确方法”,但我担心这种方法不适合持续加载(至少在不断读取的设置方面)。

如果有人有这方面的经验,我将不胜感激。

更新:我可能应该澄清几点。

这不是一个 Web 应用程序,因此将数据库连接到应用程序可能只是为了存储配置设置而过度使用。这是一个 Windows 窗体应用程序。

根据 MSDN 文档,ConfigurationManager它不仅用于存储应用程序级别设置,还用于存储用户设置。(例如,如果应用程序作为部分信任应用程序安装,则尤其重要。)

更新 2:我接受了 lomaxx 的回答,因为Properties它确实看起来是一个不错的解决方案,而无需向我的应用程序(例如数据库)添加任何额外的层。使用属性时,它已经完成了其他人建议的所有缓存。这意味着任何更改和后续读取都在内存中完成,因此速度非常快。属性仅在您明确告知时才将更改写入磁盘。这意味着我可以在运行时即时更改配置设置,然后仅在程序退出时才最终保存到磁盘。

为了验证它确实能够处理我需要的负载,我在笔记本电脑上进行了一些测试,并且能够使用 Properties 每秒进行 750,000 次读取和 7,500 次写入。这远远超出了我的应用程序甚至接近需要的东西,我觉得在不影响性能的情况下使用属性非常安全

0 投票
16 回答
74145 浏览

c# - 如何动态评估 C# 代码?

我可以eval("something()");在 JavaScript 中动态执行代码。有没有办法让我在 C# 中做同样的事情?

我正在尝试做的一个例子是:我有一个整数变量(比如i),并且我有多个属性名称:“Property1”、“Property2”、“Property3”等。现在,我想执行一些操作关于“Property i ”属性的值i

这对于 Javascript 来说非常简单。有没有办法用 C# 做到这一点?

0 投票
7 回答
1753 浏览

.net - 使用属性引用字典中键值对的最佳方法

这是一件相当琐碎的事情,但我很想听听人们对此的看法。

如果我有一个可以通过属性访问的字典,您更喜欢这些格式中的哪一种?

这可能是典型的做法。它相当有效,易于理解等。唯一的缺点是使用更长或更复杂的键可能会拼错它或仅更改一个实例或其他内容,这导致我:

这稍微复杂一些,但似乎提供了额外的安全性,并且更接近我所认为的“代码完整”解决方案。不利的一面是,当您在属性上方还有一个 /// 块和 [DefaultValue()] 块时,它开始变得有点拥挤。

那么你更喜欢哪个,为什么?有没有人有更好的想法?

0 投票
6 回答
265135 浏览

c# - 如何访问自动实现的属性的支持变量?

过去我们声明的属性是这样的:

现在我们可以这样做:

我的问题是,如何访问使用此表示法自动创建的私有变量?

我宁愿访问私有变量而不是公共访问器'Age'。是否有访问私有变量的默认表示法,或者这是不可能的?

0 投票
10 回答
1854 浏览

c# - c# 带有重复代码的属性

我有一个类有一堆看起来像这样的属性:

如果我可以依靠 C# 3.0 为这些生成后备存储,那会容易得多,但是有什么方法可以排除 IsDirty=true; 这样我就可以编写类似这样的属性并且仍然得到相同的行为:

0 投票
3 回答
8868 浏览

c# - 将 UserControl 属性设置为不显示在 VS 属性窗口中

我的 Asp.net 项目中有一个具有公共属性的 UserControl。当用户在 IDE 中突出显示 UserControl 的实例时,我不希望此属性显示在 Visual Studio 属性窗口中。我应该使用什么属性(或其他方法)来防止它出现?

0 投票
16 回答
64241 浏览

c# - 为什么无法覆盖仅 getter 的属性并添加 setter?

为什么不允许使用以下 C# 代码:

CS0546 'ConcreteClass.Bar.set':无法覆盖,因为 'BaseClass.Bar' 没有可覆盖的 set 访问器

0 投票
14 回答
603961 浏览

javascript - 如何枚举 JavaScript 对象的属性?

如何枚举 JavaScript 对象的属性?

我实际上想列出所有定义的变量及其值,但我了解到定义变量实际上会创建窗口对象的属性。

0 投票
1 回答
1403 浏览

.net - 避免使用 C++/CLI 属性的双重打击

我已经读过(在 Nish Sivakumar 的书C++/CLI In Action以及其他地方)你应该在函数调用上使用 __clrcall 装饰器以避免双重重复,以防你知道永远不会从非托管代码调用该方法。Nish 还说,如果方法签名包含任何 CLR 类型,那么 JIT 编译器将自动添加 __clrcall。我不清楚的是在创建 C++/CLI 属性时是否需要包含 __clrcall。从某种意义上说,属性只能从 .NET 语言访问,另一方面,C++/CLI 编译器(我认为)只生成可从托管代码和非托管代码调用的方法(例如 ***_get() )。那么我是否需要在我的属性上使用 __clrcall 修饰符,如果需要,它在哪里?在 get/set 函数本身上?

0 投票
6 回答
1910 浏览

c# - “代理属性”是好风格吗?

我有一个带有字符串属性的类,它实际上是几个用分隔符连接的字符串。

我想知道拥有这样的代理属性是否是一种好的形式:

有没有我忽略的风险?