我的理解是现在允许结构中的无参数构造函数.
但是下面的代码在VS 2015社区中给出了编译错误
public struct Person
{
public string Name { get; }
public int Age { get; }
public Person(string name, int age) { Name = name; Age = age; }
public Person() : this("Jane Doe", 37) { }
}
Run Code Online (Sandbox Code Playgroud)
错误:"结构不能包含显式无参数构造函数"
谁知道为什么?
在C#7中,如何使用2个参数编写这样的Expression Bodied Constructor.
public Person(string name, int age)
{
Name = name;
Age = age;
}
Run Code Online (Sandbox Code Playgroud) 据我所知,RyuJIT比JIT更快.但它是.NET 4.6的新标准还是Roslyn?
或者,当您需要在编译过程中公开API时,是否使用了Roslyn?
我对他们的目的和他们将要找到的框架感到困惑.有人可以解释这些差异,当你想要一个超过另一个时,请?
安装Vs 2015社区和DotNetCore.1.0.0-VS2015Tools.Preview2.0.1.exe(.Net Core)之后,我尝试创建一个新的.Net Core应用程序并继续收到"Package Restore Failed"消息.
我正要重新安装Win 10,因为重新安装Visual Studio没有帮助,但看到这种情况发生在我的两台计算机上.
有人知道如何解决这个问题吗?
我正在阅读这里关于"投掷表达"的部分.
它提到你现在可以在"......条件表达式,空合并表达式和一些lambda表达式"中使用它们.
但他们没有为每个人提供明确的例子,除了他们称之为有条件的,但我认为它是无效的.无论如何,我想为每三个人提供一个例子.
这些(在我的注释中)是否正确命名了条件表达式,空合并表达式和lambda表达式的throw表达式示例?或者我错误地标记/混淆了什么?
public class Person
{
public string Name { get; }
// null coalescing expression.
public Person(string name) => Name = name ?? throw new ArgumentNullException(name);
// conditional expressions
public string GetFirstName()
{
var parts = Name.Split(new string[] { " " }, StringSplitOptions.None);
return (parts.Length > 0) ? parts[0] : throw new InvalidOperationException("No name!");
}
// Lambda
public string GetLastName() => throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)