我正在尝试测试本博客中概述的一些C#7功能.
https://joshvarty.wordpress.com/2016/02/10/lrn-quick-tip-how-to-test-out-c-7-features-with-roslyn/
我已经多次遵循这些步骤,我已经有了构建和打开Visual Studio新实例的项目.一旦我打开实例,我就会从文件菜单中创建一个新的控制台项目.当我尝试使用元组时,我收到以下错误.
Error CS0518 Predefined type 'System.ValueTuple`2' is not defined or imported
Run Code Online (Sandbox Code Playgroud)
我不确定我做错了什么?我觉得有一个缺失的调整.
我正在尝试使用Mono 5在Linux构建服务器上编译我的新C#7代码.不幸的是,当我使用新的ValueTuple语法时,项目失败:
MyClass.cs(100,38):错误CS1003:语法错误,'('expected [/path/to/My.csproj]
我的项目文件中有以下包引用:
<PackageReference Include="System.ValueTuple" Version="4.3.0" />
Run Code Online (Sandbox Code Playgroud)
我在快速构建脚本中使用以下命令:
# msbuild My.sln /t:restore
# msbuild My.sln /p:Configuration=Release /p:Platform="Any CPU"
Run Code Online (Sandbox Code Playgroud)
并且MSBuild日志指示语言版本为7并显示对System.ValueTuple.dll的引用:
CoreCompile:
/usr/lib/mono/4.5/csc.exe/noconfig/unsafe-/checked-/nowarn:1701,1702,1705,1701,1702 / langversion:7/nostdlib +/errorreport:prompt/warn:4/doc:bin /Release/net461/My.xml/define:TRACE; RELEASE; NET461/highentropyva + ... /reference:/root/.nuget/packages/system.valuetuple/4.3.0/lib/netstandard1.0/System.ValueTuple. dll .../debug-/debug:portable/filealign:512/nologo/optimize + /out:obj/Release/net461/My.dll /subsystemversion:6.00/target:library/warnaserror-/utf8output/deterministic + My.cs" /tmp/.NETFramework,Version=v4.6.1.AssemblyAttributes.cs"obj/Release/net461/My.AssemblyInfo.cs
有没有人使用Mono 5在Linux上使用新的ValueTuple语法成功编译C#?它只是工作,还是你需要调整环境才能使它工作?
我的构建服务器正在运行Ubuntu 16.04并安装了mono-devel 5.0.1.1-0xamarin5 + ubuntu1604b1.
我有一些DataGridView我转换为实体对象的行.在转换过程中,我重置了一些值.由于"基本"数据来自DataBoundItem当前DataGridViewRow,因此使用对象初始化器不是我正在寻找的选项,我不想分配来自DataBoundItem再次(冗余)的第一个对象的每个值.
所以我的问题是:是否可以一次分配多个对象属性,如果,你是如何实现它的?
我发现了以下问题,但没有一个能解决我的问题:
foreach (DataGridViewRow CurrRow in DataGridView.Rows)
{
SomeObject SomeObj = (SomeObject) CurrRow.DataBoundItem;
SomeObj.PropertyA = 0;
SomeObj.PropertyB = 0;
SomeObjCollection.Add(SomeObj);
}
Run Code Online (Sandbox Code Playgroud)
单独使用逗号分配属性(在昏迷时给出语法错误):
TimeEntries.Hours, TimeEntries.Expenses = 0;
Run Code Online (Sandbox Code Playgroud) 我想用键和值的数组初始化一个Dictionary,如下所示:
int[] keys = {1, 2, 3};
string[] values = {"a", "b", "c"};
Dictionary<int, string> dict = new Dictionary<int, string>(keys, values);
Run Code Online (Sandbox Code Playgroud)
有没有一种快速的方法可以执行而不迭代数组,如:
for (int i = 0; i < keys.Length; ++i)
{
dict.Add(keys[i], values[i]);
}
Run Code Online (Sandbox Code Playgroud)
编辑:有人标志着这个问题进行重复这一个,但他们是无关的,因为这个问题不问转弯键-值的集合到一本字典,而是对象的列表,每个对象拿着钥匙和列表值,到字典。