PetShop的问题,大家看看
/// <summary>
/// Default constructor
/// This is required by web services serialization mechanism
/// </summary>
public OrderInfo() { }
/// <summary>
/// Constructor with specified initial values
/// </summary>
/// <param name= "orderId "> Unique identifier </param>
/// <param name= "date "> Order date </param>
/// <param name= "userId "> User placing order </param>
/// <param name= "creditCard "> Credit card used for order </param>
/// <param name= "billing "> Billing address for the order </param>
/// <param name= "shipping "> Shipping address for the order </param>
/// <param name= "total "> Order total value </param>
/// <param name= "line "> Ordered items </param>
/// <param name= "authorization "> Credit card authorization number </param>
public OrderInfo(int orderId, DateTime date, string userId, CreditCardInfo creditCard, AddressInfo billing, AddressInfo shipping, decimal total, LineItemInfo[] line, Nullable <int> authorization) {
this.orderId = orderId;
this.date = date;
this.userId = userId;
this.creditCard = creditCard;
this.billingAddress = billing;
this.shippingAddress = shipping;
this.orderTotal = total;
this.lineItems = line;
this.authorizationNumber = authorization;
}
___________________________________________________________________________
两构造函数,用法跟方法不同吗? 方法有重名的话是要overload一下的啊,构造函数为什么不要? 那调用构造函数的时候用那个啊?
[解决办法]
这个叫构造方法的重载,一个是有参数的一个是没有参数的。
[解决办法]
相当于两个构造函数了
[解决办法]
好好看看overload的定义把,以及overload和override的区别。
翻翻书就明白了
[解决办法]
方法也不用加Overload呀,编译器会根据签名来自动识别.其实构造函数其实就一种特别方法.比如无参构造器,即使你不写,编译器也会为你创建一个无参构造器.
PS:由于现在过分为了追求代码简洁,有很多代码都被隐藏而由编译器来完成,导致不再那么直接和直观.
所以楼主你不要担心,编译器会为你处理好这一切.如果你想深入了解,可能你要进一步了解CLR和IL这块.只有这样,才能搞清编译器在背后做了一些什么,才能解开你上面的问题.如果仅令告诉你,也仅仅知道WHAT,对于WHY还是一无所知.
[解决办法]
重载,非 重写~~
[解决办法]
比如说DataColumn类,你看他的构造函数也有重载嘛
DataColumn(string columnName)
DataColumn(string columnName,type dataType)
[解决办法]
overload不是C#的关键字
[解决办法]
mark