相关疑难解决方法(0)

Roslyn未来分支不能使用C#7特征元组 - 错误CS0518预定义类型'System.ValueTuple`2

我正在尝试测试本博客中概述的一些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)

我不确定我做错了什么?我觉得有一个缺失的调整.

.net c# roslyn c#-7.0

5
推荐指数
2
解决办法
2199
查看次数

使用Mono 5编译包含ValueTuple的C#7代码

我正在尝试使用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.

c# linux mono c#-7.0

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

如何在C#中一次分配多个对象属性?

背景

我有一些DataGridView我转换为实体对象的行.在转换过程中,我重置了一些值.由于"基本"数据来自DataBoundItem当前DataGridViewRow,因此使用对象初始化不是我正在寻找的选项,我不想分配来自DataBoundItem再次(冗余)的第一个对象的每个值.

所以我的问题是:是否可以一次分配多个对象属性,如果,你是如何实现它的?

研究

我发现了以下问题,但没有一个能解决我的问题:

在c#中一次分配多个变量

一次分配多个变量

在Windows窗体(C#)中使用一个声明设置多个属性

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)

c#

3
推荐指数
1
解决办法
407
查看次数

用键和值的数组初始化一个Dictionary

我想用键和值的数组初始化一个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)

编辑:有人标志着这个问题进行重复一个,但他们是无关的,因为这个问题不问转弯键-值的集合到一本字典,而是对象的列表,每个对象拿着钥匙和列表值,到字典。

c# dictionary

0
推荐指数
1
解决办法
1454
查看次数

标签 统计

c# ×4

c#-7.0 ×2

.net ×1

dictionary ×1

linux ×1

mono ×1

roslyn ×1