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和其他一些系统。管理类。

c#相关的构造函数和属性

您需要同时提供两个构造函数:

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属性类型遗漏为intstring

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 .

的无参数构造函数。