c#相关的构造函数和属性
本文关键字:属性 构造函数 | 更新日期: 2023-09-27 18:13:53
我正在构建一个小库,我遇到了一个问题。我想提供一个双向的解决方案,例如:
我怎样才能做到这一点?我得到异常抛出,因为它期望…任何例子都是受欢迎的:)谢谢!
编辑:我正在执行一些东西,最初我的代码类似于这个:
System.IO.DriveInfo d = new System.IO.DriveInfo("C:");
我想让我的班级达到以下目标:
Driver d = new Driver();
d.DriverLetter = "C:";
仍然得到相同的结果,我使用managentobjectsearch, managentobjectcollection和其他一些系统。管理类。
您需要同时提供两个构造函数:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Country { get; set; }
// Paramterless constructor - for new Person();
// All properties get their default values (string="" and int=0)
public Person () { }
// Parameterized constructor - for new Person("Joe", 16, "USA");
public Person (string name, int age, string country)
{
Name = name;
Age = age;
Country = country;
}
}
如果定义了参数化构造函数,则不包括默认的无参数构造函数。因此,需要自己包含它。
来自MSDN 10.10.4默认构造函数:
如果一个类不包含实例构造函数声明,则自动提供一个默认的实例构造函数。
必须定义一个接受这三个参数的构造函数:
public class Person
{
public Person(string name, string age, string country)
{
this.Name = name;
this.Age = age;
this.Country = country;
}
}
通过这种方式,您可以在构造类时将值赋给属性。一个类可以有多个带不同参数的构造函数,可以用: this()
语法调用另一个构造函数:
public class Person
{
public Person()
: this(string.Empty, string.Empty, string.Empty)
{
}
public Person(string name, string age, string country)
{
this.Name = name;
this.Age = age;
this.Country = country;
}
}
这里的"empty"构造函数将调用另一个构造函数并将所有属性设置为空字符串。
试试这个:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Country { get; set; }
public Person()
{
}
public Person(string name, int age, string country)
{
Name = name;
Age = age;
Country = country;
}
}
class Test
{
static void Main(string[] args)
{
var person1 = new Person();
person1.Name = "Joe";
person1.Age = 2;
person1.Country = "USA";
var person2 = new Person("John", 4, "USA");
}
}
如果你没有定义构造函数, . net框架将隐式地提供一个默认的/无参数的构造函数。但是,如果定义了参数化构造函数,则还需要显式地定义默认构造函数。
您可能将Age
属性类型遗漏为int
或string
。
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Country { get; set; }
public Person()
{
}
public Person(string name, int age, string country)
{
this.Name = name;
this.Age = age;
this.Country = country;
}
}
class Program
{
static void Main(string[] args)
{
Person p1 = new Person("Erik", 16, "United States");
Person p2 = new Person();
p2.Name = "Erik";
p2.Age = 16;
p2.Country = "United States";
}
}
EDIT:您还需要Also .