c#-3.0 – C#中私有无参数构造函数的用途是什么
发布时间:2020-12-16 01:54:28 所属栏目:百科 来源:网络整理
导读:我刚收到Jon Skeet在邮件中的深度C#,我没有按照第7-8页的讨论. We now have a private parameterless constructor for the sake of the new property-based initialization. (p. 8) 我不清楚基于属性的初始化如何需要无参数构造函数,如果这是“为了”的意思.
我刚收到Jon Skeet在邮件中的深度C#,我没有按照第7-8页的讨论.
我不清楚基于属性的初始化如何需要无参数构造函数,如果这是“为了”的意思. class Product { public string Name { get; private set;} public decimal Price { get; private set;} public Product (string name,decimal price) { Name = name; Price = price; } Product(){} . . . } Product(){}的目的是什么? 解决方法
这段代码:
Product p = new Product { Name = "Fred",Price = 10m }; 相当于: Product tmp = new Product(); tmp.Name = "Fred"; tmp.Price = 10m; Product p = tmp; 所以仍然需要无参数构造函数 – 它只在示例代码中的类中调用,所以它可以是私有的. 这并不是说所有对象初始值设定项都需要无参数构造函数.例如,我们可以: // Only code within the class is allowed to set this public string Name { get; private set; } // Anyone can change the price public decimal Price { get; set; } public Product(string name) { this.Name = name; } 然后从任何地方使用它: Product p = new Product("Fred") { Price = 10m }; 当然,本书后面还有更多细节(第8章IIRC). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |