有沒有辦法自動生成一個如下所示的建構式:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public User(int id, string name)
{
Id = 0;
Name = "";
}
}
目前我正在使用重構工具(CTRL .)創建一個這樣的建構式:
public User(int id, string name)
{
Id = id;
Name = name;
}
并在之后編輯每一行,當每個類有 20 個屬性時,這非常麻煩。有更好的方法嗎?(也許要定義一個代碼片段,以便我們可以以某種方式通過反射讀取類屬性并將它們定義為片段引數?)
uj5u.com熱心網友回復:
如果你有一個有 20 個屬性的類,為什么需要一個有 20 個引數的建構式?可能有點意思,但我通常創建建構式來初始化相關的屬性,簡化代碼,而不是設定所有屬性。
對于您的類,您可以在定義屬性時設定默認值,所有建構式都將使用此值作為默認值。
public class User
{
public int Id { get; set; } = 0;
public string Name { get; set; } = string.Empty;
// Here you can even omit the constructor
public User()
{
}
}
另一件可能有用的事情是定義一個帶有 X 引數的建構式,并在其他帶有較少引數的建構式中重用這個建構式:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public User()
: this(0, string.Empty)
{
}
public User(int id, string name)
{
Id = id;
Name = name;
}
}
如果要使用每種型別的默認值,可以替換this(0, string.Empty)for 。this(default, default)
uj5u.com熱心網友回復:
你的意思是初始化屬性?通過代碼反射機制初始化屬性也需要一一賦值。對于私有物件屬性,需要去私有封裝。c#中初始化屬性的操作一般是用建構式的形式初始化物件屬性或物件初始化器。謝謝希望對你有幫助
class Program
{
static void Main(string[] args)
{
Student student = new Student()
{
age = 25,
name = "java",
sex = "男"
};
}
class Student
{
public int age { get; set; }
public string name { get; set; }
public string sex { get; set; }
public Student()
{
}
public Student(int age, string name,string sex)
{
this.age = age;
this.name = name;
this.sex = sex;
}
}
}
uj5u.com熱心網友回復:
如果您需要使用屬性的默認值創建物件。你可以這樣編碼:
public class User
{
public int Id { get; set; } = 0;
public string Name { get; set; } = "";
}
快速操作“生成建構式”的目的是使方法建構式為欄位或屬性賦值。不要在僅分配默認值的情況下使用它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/475873.html
上一篇:使用不同版本的VisualStudio構建C 代碼會產生不同的.exe檔案大小?
下一篇:c中Sobel演算法的多個問題
