以下的方法是什么意思呢?
: this(isSuccess, 0, "", default(T))
这是一种什么样的用法? 谢谢!
/// <summary> /// 业务层返回对象 /// </summary> [Serializable] public class BusinessResult<T> { #region 构造函数 /// <summary> /// 业务层返回对象 /// </summary> /// <param name="isSuccess">是否成功</param> public BusinessResult(bool isSuccess) : this(isSuccess, 0, "", default(T)) { this.isSuccess = isSuccess; } /// <summary> /// 业务层返回对象 /// </summary> /// <param name="isSuccess">是否成功</param> /// <param name="returnCode">返回代码</param> public BusinessResult(bool isSuccess, int returnCode) : this(isSuccess, returnCode, "", default(T)) { } /// <summary> /// 业务层返回对象 /// </summary> /// <param name="isSuccess">是否成功</param> /// <param name="returnString">返回信息</param> public BusinessResult(bool isSuccess, string returnString) : this(isSuccess, 0, returnString, default(T)) { } /// <summary> /// 业务层返回对象 /// </summary> /// <param name="isSuccess">是否成功</param> /// <param name="returnObject">返回对象</param> public BusinessResult(bool isSuccess, T returnObject) : this(isSuccess, 0, "", returnObject) { } /// <summary> /// 业务层返回对象 /// </summary> /// <param name="isSuccess">是否成功</param> /// <param name="returnCode">返回代码</param> /// <param name="returnObject">返回对象</param> public BusinessResult(bool isSuccess, int returnCode, T returnObject) : this(isSuccess, returnCode, "", returnObject) { } /// <summary> /// 业务层返回对象 /// </summary> /// <param name="isSuccess">是否成功</param> /// <param name="returnCode">返回代码</param> /// <param name="returnString">返回信息</param> public BusinessResult(bool isSuccess, int returnCode, string returnString) : this(isSuccess, returnCode, returnString, default(T)) { } /// <summary> /// 业务层返回对象 /// </summary> /// <param name="isSuccess">是否成功</param> /// <param name="returnCode">返回代码</param> /// <param name="returnString">返回信息</param> /// <param name="returnObject">返回对象</param> public BusinessResult(bool isSuccess, int returnCode, string returnString, T returnObject) { this.isSuccess = isSuccess; this.returnCode = returnCode; this.returnString = returnString; this.returnObject = returnObject; } #endregion #region 私有字段 /// <summary> /// 是否成功 /// </summary> private bool isSuccess; /// <summary> /// 返回代码 /// </summary> private int returnCode; /// <summary> /// 返回信息 /// </summary> private string returnString; /// <summary> /// 返回对象 /// </summary> private T returnObject = default(T); #endregion #region 公共属性 /// <summary> /// 获取是否成功 /// </summary> public bool IsSuccess { get { return this.isSuccess; } } /// <summary> /// 获取返回代码 /// </summary> public int ReturnCode { get { return this.returnCode; } set { this.returnCode = value; } } /// <summary> /// 获取或设置返回信息 /// </summary> public string ReturnString { get { return this.returnString; } set { this.returnString = value; } } /// <summary> /// 获取或设置返回对象 /// </summary> public T ReturnObject { get { return this.returnObject; } set { this.returnObject = value; } } #endregion }
就是调用一个构造函数的时候,其实让他调用另外一个构造函数呗,目的一般是在你传入两个参数的时候,把第三个参数也初始化了。。。
调用父类构造函数.
1.BusinessResult<T> 这个类 没有继承自其他类,何来 父类呢?
2.为什么在自己的构造函数后面 “:”去调用 父类构造函数,是一种什么用法呢? 谢谢
@王庆东mas: 对不起我看错了..父类是base
this是当前类另外一个构造函数重载.目的是为了方便..
比如提供一个最复杂的构造函数.然后提供一个相对简单的.构造函数然后使用默认值调用最复杂的构造函数来简化类的使用
@吴瑞祥: 如果把你所说的“复杂的构造函数” 写成一个方法去掉用,看起来就没这么复杂了吧? 这样写的优势在哪呢? 因为我没这么写过,谢谢大神!
@王庆东mas: 没什么优势.是有的情况要求你这样写..没有别的解决方案.
构造函数就是构造函数和方法有本质区别.不能混为一谈.
应该是你平时构造函数用的少.多写写就好了
@吴瑞祥: 弱弱的再问一句,什么情况下不能通过写一个公用方法 而非要这样写简单,复杂ctor函数呢?
@王庆东mas:
不是复杂构造函数.而是构造函数.复杂不复杂他都是构造函数.
构造函数和方法完全是2种东西没有可比性的.
构造函数的作用是初始化对象.也就是说只要对象存在就一定调用过某个构造方法.
而方法是对象的一个功能.你无法确定这个方法是否被调用过
调用当前类的构造函数。
base(....)调用父类构造函数
能结合上面代码 分析下吗?
自己构造函数 调用 父类构造函数?
很凌乱。
谢谢
@王庆东mas:
ctor(string a){
this(a,"","");
}
ctor(string a,string b){
this(a,b,"");
}
ctor(string a,string b,string c){
this.a=a;this.b=b;this.c=c;
}
能理解代码意图吗
@calvinK: 就是简单构造函数调用 复杂构造函数吗
@王庆东mas: 简单来说
参数有默认值的前提下,简化,方便调用者构建实例的一种方式。
。net framework 到处都能看到这种,对不对。