好。我想抓住施工人员。我想把这名员工命名为Stormtrooper。但它似乎没有称之为。我不知道我是不是正确地阅读了构造函数,或者我的内容是什么
任何帮助将不胜感激。这是我意识到的一个非常棒的问题。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication297
{
public class Program
{
static void Main(string[] args)
{
Employee s = new Employee(name);
Console.WriteLine(s.Name);
Console.ReadKey();
}
public class Employee
{
private string name;
public string Name
{
get
{
return name;
}
}
public Employee(string name)
{
name = Stormtrooper;
}
}
}
}
答案 0 :(得分:7)
在你的构造函数中你将局部变量设置为StormTrooper
(这是无效的,因为它没有在任何地方声明。如果你想要它是一个字符串,它需要用引号括起来,即"StormTrooper"
)
应该是这样的:
public Employee(string name)
{
this.name = name;
}
this
关键字表示类的实例,然后将私有变量name
设置为传入名为name
的变量
我通常将我的私有变量命名为private string _name
,所以我可以使用这样的构造函数:
public Employee(string name)
{
_name = name;
}
答案 1 :(得分:4)
您需要向Employee发送一个字符串。
您从未在此代码中定义名称
Employee s = new Employee(name);
所以请尝试
String name = "Stormtrooper";
Employee s = new Employee(name);
或者,您可以在不创建变量的情况下导演字符串。如果您只是构建类,则无需初始化和存储变量。
Employee s = new Employee("Stormtrooper");
还要修复你的实际构造函数,感谢PostMan
public Employee(string name)
{
this.name = name;
}
答案 2 :(得分:2)
您需要将string
传递给构造函数,如下所示:
Employee s = new Employee("Stormtrooper");
此外,这通常是一个坏主意,因为读取/维护代码以调用类成员变量和构造函数的参数是相同的事情(在此实例中为name
)会让人感到困惑。而是使用属性值Name
,如下所示:
public Employee(string name)
{
Name = Stormtrooper;
}
注意:很多时候,您会在类成员变量上看到下划线(_
)或其他前缀(如my
),如下所示:
public class Employee
{
private string _name;
public string Name
{
get
{
return _name;
}
}
public Employee(string name)
{
_name = Stormtrooper;
}
}
同样,这通常可以更容易地从构造函数参数中快速识别属性名称中的变量。
答案 3 :(得分:1)
Microsoft网站上有关于构造函数的官方帖子 - http://msdn.microsoft.com/en-us/library/vstudio/ace5hbzh.aspx这将帮助您使用正确的方法来使用构造函数以及选择合适的构造函数