首页 新闻 会员 周边 捐助

有关C#类的简单问题,求深入

0
悬赏园豆:5 [已解决问题] 解决于 2016-12-09 16:20
以下的方法是什么意思呢?

:
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
    }

 

 
王庆东mas的主页 王庆东mas | 初学一级 | 园豆:4
提问于:2016-10-28 14:49
< >
分享
最佳答案
0

就是调用一个构造函数的时候,其实让他调用另外一个构造函数呗,目的一般是在你传入两个参数的时候,把第三个参数也初始化了。。。

收获园豆:5
顾晓北 | 专家六级 |园豆:10898 | 2016-11-02 11:30
其他回答(2)
0

调用父类构造函数.

吴瑞祥 | 园豆:29449 (高人七级) | 2016-10-28 14:54

1.BusinessResult<T> 这个类 没有继承自其他类,何来 父类呢?

2.为什么在自己的构造函数后面 “:”去调用 父类构造函数,是一种什么用法呢?  谢谢

支持(0) 反对(0) 王庆东mas | 园豆:4 (初学一级) | 2016-10-28 15:55

@王庆东mas: 对不起我看错了..父类是base

this是当前类另外一个构造函数重载.目的是为了方便..

比如提供一个最复杂的构造函数.然后提供一个相对简单的.构造函数然后使用默认值调用最复杂的构造函数来简化类的使用

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-10-28 16:43

@吴瑞祥: 如果把你所说的“复杂的构造函数” 写成一个方法去掉用,看起来就没这么复杂了吧?  这样写的优势在哪呢? 因为我没这么写过,谢谢大神!

支持(0) 反对(0) 王庆东mas | 园豆:4 (初学一级) | 2016-10-28 16:58

@王庆东mas: 没什么优势.是有的情况要求你这样写..没有别的解决方案.

构造函数就是构造函数和方法有本质区别.不能混为一谈.

应该是你平时构造函数用的少.多写写就好了

支持(1) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-10-29 16:07

@吴瑞祥: 弱弱的再问一句,什么情况下不能通过写一个公用方法 而非要这样写简单,复杂ctor函数呢?

支持(0) 反对(0) 王庆东mas | 园豆:4 (初学一级) | 2016-10-31 09:20

@王庆东mas: 

不是复杂构造函数.而是构造函数.复杂不复杂他都是构造函数.

构造函数和方法完全是2种东西没有可比性的.

构造函数的作用是初始化对象.也就是说只要对象存在就一定调用过某个构造方法.

而方法是对象的一个功能.你无法确定这个方法是否被调用过

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-10-31 10:45
0

调用当前类的构造函数。

base(....)调用父类构造函数

czd890 | 园豆:14488 (专家六级) | 2016-10-28 15:18

能结合上面代码 分析下吗? 

自己构造函数 调用 父类构造函数?  

很凌乱。

谢谢

支持(0) 反对(0) 王庆东mas | 园豆:4 (初学一级) | 2016-10-28 15:57

@王庆东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;

}

 

能理解代码意图吗

支持(0) 反对(0) czd890 | 园豆:14488 (专家六级) | 2016-10-28 23:30

@calvinK: 就是简单构造函数调用 复杂构造函数吗

支持(0) 反对(0) 王庆东mas | 园豆:4 (初学一级) | 2016-10-31 09:18

@王庆东mas: 简单来说

参数有默认值的前提下,简化,方便调用者构建实例的一种方式。

。net framework 到处都能看到这种,对不对。

支持(1) 反对(0) czd890 | 园豆:14488 (专家六级) | 2016-10-31 21:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册