我正在使用以下代码在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#.如果我将使用python,我会做一些像python -V命令行或类型
import sys
print sys.version
Run Code Online (Sandbox Code Playgroud)
在PHP中我会做这样的事情:phpinfo();在java中:java -version
但我无法在C#中找到如何实现这一目标.
我对C#完全不熟悉,所以请不要太难打败我.令我感到惊讶的是,我无法在SO上找到这个答案,因此我认为我在找东西时遗漏了一些东西或者很糟糕.顺便说一句,这个问题没有回答,虽然名字暗示它应该.
谢谢你的回答.现在我知道它取决于.NET框架,但有没有一种编程方式来确定我的框架?(无需转到目录并检查我的.NET文件夹的名称)
我正在尝试决定是在ASP.NET 5上启动我的新项目还是坚持使用当前框架.不幸的是,我似乎找不到这个项目的时间表.Github表明,开发人员目前正在开发其第一个候选版本.Microsoft通常会发布预期的发布日期吗?如果是这样,我在哪里可以找到他们拍摄的日期?
如何创建自定义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)
但是,我如何避免额外的集合元素("公司"),使其看起来与appSettings和connectionStrings部分相同?换句话说,我想:
<registerCompanies>
<add name="Tata Motors" code="Tata"/>
<add name="Honda Motors" code="Honda"/>
</registerCompanies>
Run Code Online (Sandbox Code Playgroud) 随着最近发布的.NET 4.0和Visual Studio 2010,跟踪哪些.NET Framework版本构建在什么版本的CLR上并且属于Visual Studio的哪个版本变得越来越困难.
是否有显示这些关系的权威表格?
我知道C#3.5与VS2008和.NET 3.5一起使用.
此外,C#4是VS2010和.Net 4.0的一部分.
但什么是C#5?什么IDE?
在Visual Studio 2019 Advanced Build设置中,C#8似乎不适用于.NET Framework项目,而仅适用于.NET Core 3.0项目(如下图所示):
C#8是否支持.NET Framework?
有段时间我认为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
所以,我有一个要删除的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元素.
那我该如何循环呢?或者是否应该以另一种方式重写?
c# ×6
.net ×5
app-config ×1
asp.net-core ×1
c#-3.0 ×1
c#-8.0 ×1
clr ×1
dictionary ×1
foreach ×1
java ×1
version ×1
versions ×1
xelement ×1