相关疑难解决方法(0)

使用值初始化C#字典的正确方法?

我正在使用以下代码在C#文件中创建字典:

private readonly Dictionary<string, XlFileFormat> FILE_TYPE_DICT
        = new Dictionary<string, XlFileFormat>
        {
            {"csv", XlFileFormat.xlCSV},
            {"html", XlFileFormat.xlHtml}
        };
Run Code Online (Sandbox Code Playgroud)

new错误下面有一条红线:

无法使用功能'集合initilializer',因为它不是ISO-2 C#语言规范的一部分

谁能解释一下这里发生了什么?

编辑:好的,所以事实证明我使用的是.NET版本2.

c# dictionary

447
推荐指数
7
解决办法
39万
查看次数

我使用的是哪个版本的C#

我的问题很简单:我想知道我正在使用哪个版本的C#.如果我将使用python,我会做一些像python -V命令行或类型

import sys
print sys.version
Run Code Online (Sandbox Code Playgroud)

在PHP中我会做这样的事情:phpinfo();在java中:java -version

但我无法在C#中找到如何实现这一目标.

我对C#完全不熟悉,所以请不要太难打败我.令我感到惊讶的是,我无法在SO上找到这个答案,因此我认为我在找东西时遗漏了一些东西或者很糟糕.顺便说一句,这个问题没有回答,虽然名字暗示它应该.

谢谢你的回答.现在我知道它取决于.NET框架,但有没有一种编程方式来确定我的框架?(无需转到目录并检查我的.NET文件夹的名称)

c# version

166
推荐指数
15
解决办法
12万
查看次数

什么时候ASP.NET Core 1.0(ASP.NET 5/vNext)计划发布?

我正在尝试决定是在ASP.NET 5上启动我的新项目还是坚持使用当前框架.不幸的是,我似乎找不到这个项目的时间表.Github表明,开发人员目前正在开发其第一个候选版本.Microsoft通常会发布预期的发布日期吗?如果是这样,我在哪里可以找到他们拍摄的日期?

asp.net-core

133
推荐指数
4
解决办法
3万
查看次数

自定义app.config部分,带有一个简单的"添加"元素列表

如何创建自定义app.config部分,它只是一个简单的add元素列表?

我找到了一些示例(例如,如何在app.config中创建自定义配置部分?),以查看如下所示的自定义部分:

<RegisterCompanies>
  <Companies>
    <Company name="Tata Motors" code="Tata"/>
    <Company name="Honda Motors" code="Honda"/>
  </Companies>
</RegisterCompanies>
Run Code Online (Sandbox Code Playgroud)

但是,我如何避免额外的集合元素("公司"),使其看起来与appSettingsconnectionStrings部分相同?换句话说,我想:

<registerCompanies>
  <add name="Tata Motors" code="Tata"/>
  <add name="Honda Motors" code="Honda"/>
</registerCompanies>
Run Code Online (Sandbox Code Playgroud)

c# app-config

84
推荐指数
4
解决办法
8万
查看次数

68
推荐指数
4
解决办法
14万
查看次数

.NET Framework,CLR和Visual Studio版本号如何相互关联?

随着最近发布的.NET 4.0和Visual Studio 2010,跟踪哪些.NET Framework版本构建在什么版本的CLR上并且属于Visual Studio的哪个版本变得越来越困难.

是否有显示这些关系的权威表格?

.net clr versions visual-studio

59
推荐指数
3
解决办法
2万
查看次数

什么是C#5,它来自哪里?

我知道C#3.5与VS2008和.NET 3.5一起使用.
此外,C#4是VS2010和.Net 4.0的一部分.
但什么是C#5?什么IDE?

.net c# visual-studio

52
推荐指数
4
解决办法
3万
查看次数

C#8是否支持.NET Framework?

在Visual Studio 2019 Advanced Build设置中,C#8似乎不适用于.NET Framework项目,而仅适用于.NET Core 3.0项目(如下图所示):

在此处输入图片说明

C#8是否支持.NET Framework?

.net c# visual-studio .net-standard c#-8.0

52
推荐指数
2
解决办法
9569
查看次数

C#编译器版本和语言版本之间的区别

有段时间我认为Framework版本和C#版本是相同的,所以一旦你在计算机上安装下一个Framework版本,就应该使用它.

然后我发现框架没有直接与C#版本链接,并且在同一台机器上,多个C#编译器可以同居,所以编译器和C#版本可能是相同的.

现在我明白编译器版本和C#版本不一样了......


Visual Studio命令提示符(2010):C:\>csc

Microsoft(R)Visual C#编译器版本4 .0.30319.33440(
适用于Microsoft(R).NET Framework 4.5)


VS 2013开发人员命令提示符:C:\>csc

用于C#5的 Microsoft(R)Visual C#编译器版本12 .0.30110.0


在此输入图像描述

我们可以看到
- VS 2010使用编译器版本4.0用于C#4(我可以假设它,因为没有明确提到);
- VS 2013使用C#5的编译器版本12.0(这是明确提到的)

知道使用不同语言版本进行编译可能会给用户带来不同的结果

问题

  • 如何找出C#版本(不是编译器版本,而是语言版本)使用VS来构建我的具体项目?

  • C#编译器语言版本之间是否存在严格,清晰和透明的链接?

  • 我是否可以向Visual Studio指出(如果从一个Studio版本迁移到另一个版本),为我的具体解决方案使用不同的编译器版本?

.net c# compiler-construction visual-studio-2010 visual-studio-2013

24
推荐指数
2
解决办法
8554
查看次数

在foreach循环中删除XElements

所以,我有一个要删除的bug

foreach (XElement x in items.Elements("x")) 
{
    XElement result = webservice.method(x);

    if (/*condition based on values in result*/) 
    {
        x.Remove();
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是调用x.Remove()会改变foreach,如果有两个元素("x"),并且第一个被删除,则循环不会到达第二个x元素.

那我该如何循环呢?或者是否应该以另一种方式重写?

.net foreach xelement c#-3.0

23
推荐指数
1
解决办法
1万
查看次数