小编Dav*_*inn的帖子

.NET 5 WinForms 应用程序中保存的设置在哪里?

在 .NET Framework WinForms 项目中,项目中有一个 App.config 文件,该文件是一个 XML 文件,其中包含一个 configSection,该文件将引用 System.Configuration 中的一个类,以及一个用于 userSettings 本身的部分,如下所示:

<configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561944e089">
        <section name="MyAppName.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561944e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
</configSections>
<userSettings>
    <MyAppName.Properties.Settings>
        <setting name="Test" serializeAs="String">
            <value>Some Value</value>
        </setting>
    </MyAppName.Properties.Settings>
</userSettings>
Run Code Online (Sandbox Code Playgroud)

这在构建文件夹中创建了一个文件,其中应用程序名称加上 .exe.config,如 MyAppName.exe.config。

但是当我使用 .NET 创建一个新的 WinForms 项目时:

新的 .NET WinForms 项目

解决方案中没有 App.config。我可以使用项目属性编辑设置:

项目属性设计器上的应用程序设置

我可以访问这些值,并使用相同的 Properties 对象和方法更新它们:

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            textBox1.Text = Properties.Settings.Default.Test;
        }

        private void button1_Click(object sender, EventArgs …
Run Code Online (Sandbox Code Playgroud)

winforms .net-5

9
推荐指数
1
解决办法
1982
查看次数

尝试模仿 Excel 舍入让我感到悲伤

该值是将 2.01 和 2.52 之和除以 2 的结果(2.01 + 2.52) / 2。Excel 将该值显示为 2.265,当格式化为 2 位数字时,该值为 2.27。但是,文件中存储的值为 2.2649999999999997。当我重新创建这是 C# 时,我也在变量中得到该值,而不是 2.265。据我所知,这是由于 4.53 除以 2 的浮点精度问题造成的。

double result = (2.01 + 2.52) / 2;
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)

控制台显示 2.265,但 QuickWatch 调试器中显示的值显示 2.264999999999997。我怀疑 WriteLine 方法中将值转换为字符串可以纠正浮点精度错误。

当我申请时Math.Round(result, 2, MidpointRounding.AwayFromZero),结果并不2.262.27我预期的那样。似乎它查看了我想要四舍五入的数字右侧的第一个数字,发现它是 4,并忽略了它右侧的所有其他数字。问题在于,这些 9 只是由于精度问题而存在,并且需要包含在内,或者更好的是,该值应该是2.265

我在代码中所做的就是从 Excel 电子表格中读取文本值"2.2649999999999997",将其转换为双精度型2.264999999999999,然后转换为字符串,这给了我"2.265". 然后我将其转换回双精度,2.265以便我可以将 应用于Math.Round它并获得 的预期结果2.27。这是完整的代码:

double result = Convert.ToDouble(((2.01 + 2.52) …
Run Code Online (Sandbox Code Playgroud)

c# excel rounding-error rounding

5
推荐指数
1
解决办法
772
查看次数

使用 Sql Server 2016 的 OPENJSON 函数从 Json 文档中的多个数组元素中选择结果

是否可以在 Sql Server 2016 中将来自多个数组元素的 json 文档的部分组合成单个结果?

鉴于此json:

{
  "fruit": {
    "types": [
      {
        "possible": [ "Apples", "Bananas", "Pears" ],
        "category": "Basic"
      },
      {
        "possible": [ "Oranges", "Grapefruit", "Lemons", "Limes" ],
        "category": "Citrus"
      },
      {
        "possible": [ "Blueberries", "Strawberries", "Cherries" ],
        "category": "Berries"
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

我想看到来自可能元素的所有值的单个结果:

results
-----
Apples
Bananas
Pears
Oranges
Grapefruit
Lemons
Limes
Blueberries
Strawberries
Cherries
Run Code Online (Sandbox Code Playgroud)

我已经接近这样做了:

SELECT * FROM OPENJSON(JSON_QUERY(@json, '$.fruit.types[0].possible'))
UNION
SELECT * FROM OPENJSON(JSON_QUERY(@json, '$.fruit.types[1].possible'))
UNION
SELECT * FROM OPENJSON(JSON_QUERY(@json, '$.fruit.types[2].possible'))
Run Code Online (Sandbox Code Playgroud)

但这依赖于将查询与数组中的元素数量联系起来。有没有办法在不必单独指定每个数组元素的情况下做到这一点?像这样的东西(这些都不是有效的表达):

SELECT …
Run Code Online (Sandbox Code Playgroud)

sql-server json sql-server-2016 open-json

2
推荐指数
1
解决办法
3205
查看次数