当我在对象初始化程序中使用Console.Write
时,我收到此错误
错误CS0747初始化程序成员声明符无效
person[i] = new Karmand()
{
Console.Write("first name:"),
FirstName = Console.ReadLine(),
LastName = Console.ReadLine(),
ID = Convert.ToInt32(Console.ReadLine()),
Hoghoogh = Convert.ToDouble(Console.ReadLine())
};
答案 0 :(得分:6)
您无法,因为Console.Write
不是Karmand
的可访问媒体资源或字段。您只能在object initializers中设置类属性和字段的值。
您的代码是下面代码的语法糖(a little bit different)。
var person[i] = new Karmand();
// what do you expect to do with Console.Write here?
person[i].FirstName = Console.ReadLine();
person[i].LastName = Console.ReadLine();
person[i].ID = Convert.ToInt32(Console.ReadLine());
person[i].Hoghoogh = Convert.ToDouble(Console.ReadLine());
如果需要,您可以在Karmand
类中创建一个构造函数来打印它。
public class Karmand
{
public Karmand(bool printFirstName = false)
{
if (printFirstName)
Console.Write("first name:");
}
// rest of class code
}
然后像
一样使用它person[i] = new Karmand(printFirstName: true)
{
FirstName = Console.ReadLine(),
LastName = Console.ReadLine(),
ID = Convert.ToInt32(Console.ReadLine()),
Hoghoogh = Convert.ToDouble(Console.ReadLine())
};
答案 1 :(得分:1)
尝试删除Console.Write("first name:")
。 Console.Writeline
不是对属性或字段的赋值。
来自MSDN
对象初始值设定项用于为属性或值分配值 领域。任何不是属性或属性赋值的表达式 field是编译时错误。
纠正此错误确保全部 初始值设定项中的表达式是属性或字段的赋值 这种类型。
<强>更新强>
如果您需要使用Console.Writeline,请在对象初始值设定项之前使用它,如
Console.Writeline("first name:");
{ person[i] = new Karmand()
{
FirstName = Console.ReadLine(),
LastName = Console.ReadLine(),
ID = Convert.ToInt32(Console.ReadLine()),
Hoghoogh = Convert.ToDouble(Console.ReadLine())
};