创建对象时直接进行对象初始化(设置值)

时间:2019-10-03 11:45:46

标签: c#

我正在学习这门课程herethis is live demo

请问几个问题,因为我想确认我正在理解自己正在阅读的内容:

1)为什么在下面的代码中创建对象时直接设置一个值

Transaction t1 = new Transaction("8877", "6/25/2018");

而不是像下面这样;这不起作用!!!

Transaction transac1 = new Transaction();
transac1.("1234", "2019/10/03");

2)public Transaction() {public Transaction(string c, string d)是否超载概念?

3)下面是使用重载的构造方法吗?

public Transaction()
{
    tCode = " ";
    tDate = " ";
}

4)为什么事务类没有属性,尽管我只看到下面两个带有私有访问修饰符的字段/变量。而我在OOP书中读到,您必须始终使用属性以免暴露外部字段。

private string tCode;
private string tDate;

public interface ITransactions
{
    // interface members
    void showTransaction();
}

public class Transaction : ITransactions
{
    private string tCode;
    private string date;

    public Transaction()
    {
        tCode = " ";
        date = " ";
    }

    public Transaction(string c, string d)
    {
        tCode = c;
        date = d;
    }

    public void showTransaction()
    {
        Console.WriteLine("Transaction ID: {0}", tCode);
        Console.WriteLine("Date: {0}", date);
    }
}

class Tester
{
    static void Main(string[] args)
    {
        Transaction t1 = new Transaction("8877", "6/25/2018");
        Transaction t2 = new Transaction("5656", "7/25/2018");

        t1.showTransaction();
        t2.showTransaction();
        Console.ReadKey();
    }
}

1 个答案:

答案 0 :(得分:0)

1)

  

[...]无效!

Transaction transac1 = new Transaction();
       transac1.("1234", "2019/10/03");

是的,这根本不起作用,它是无效的语法。您可以将构造函数称为new Transaction();new Transaction("8877", "6/25/2018");

2)

  

public Transaction() {public Transaction(string c, string d)是重载概念吗?

是的

3)

  

下面是使用重载的构造方法吗?

     

[...]

没有“构造方法”之类的东西。您有构造函数,有方法,但是没有任何“构造方法”。

4)

  

为什么Transaction类没有属性,即使我只看到下面两个带有私有访问修饰符的字段/变量。

您不需要使用公共属性公开所有私有字段。不必为您拥有的任何私有字段都拥有公共属性。如果您不想为班级中的任何数据提供此类访问权限,则无需这样做。在这种情况下,您只需要showTransaction()