c# - 字段初始值设定项不能引用非静态字段方法或属性

Dea*_*ean 0 c#

C# 和 OOP 的新手。我正在尝试使用一些信息初始化创建一个名为“Human”的类。但是我收到以下错误a field initializer cannot reference the nonstatic field method or property。尝试创建变量时,错误消息指向first_namelast_namefull_name

这是“简单”的代码

namespace World
{
    public class Human
    {
        // Personal traits
        public string first_name;
        public string last_name;
        public string full_name = first_name + " " + last_name;
    }
}
Run Code Online (Sandbox Code Playgroud)

我到底做错了什么?我不明白。。

Pat*_*ner 5

您可以将其实现为在其 getter 中返回计算字符串的属性

namespace World
{
    public class Human
    {
        // Personal traits
        public string first_name;
        public string last_name;
        public string full_name { get { return first_name + " " + last_name}};
    }
}
Run Code Online (Sandbox Code Playgroud)

您使用这种写成员名称的方式有什么原因吗?通常我会这样做:

namespace World
{
    public class Human
    {
        // Personal traits
        public string FirstName {get; set;} 
        public string LastName {get; set;} 
        public string FullName => $"{FirstName} {LastName}"; // C#7 notation notation
    }
}
Run Code Online (Sandbox Code Playgroud)

公共属性使用 PascalCasing,私有的 camelCasing 根据 MS 是“正常的”,甚至会在 VS2017 中产生提示