簡體   English   中英

如何在對象初始值設定項中使用Console.Write?

[英]How can I use Console.Write in object initializer?

當我在對象初始化程序中使用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())
            };

您不能,因為Console.Write不是Karmand的可訪問屬性或字段。 您只能在對象初始值設定項中設置類屬性和字段的值。

你的代碼是下面代碼的語法糖( 有點不同 )。

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())
            };

嘗試刪除Console.Write("first name:") Console.Writeline不是對屬性或字段的賦值。

來自MSDN

對象初始值設定項用於為屬性或字段賦值。 任何不是屬性或字段賦值的表達式都是編譯時錯誤。

更正此錯誤確保初始值設定項中的所有表達式都是對該類型的屬性或字段的賦值。

更新:
如果你需要使用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())
            };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM