zoukankan      html  css  js  c++  java
  • default(T);

    在泛型类型中,由于泛型类型即可以是引用类型也可以是值类型,所以不能用null来表示默认值。这里通过default来进行。引用类型的default将泛型类型初始化null,值类型的default将泛型类型初始化为0。

    之所以会用到default关键字,是因为需要在不知道类型参数为值类型还是引用类型的情况下,为对象实例赋初值。考虑以下代码:

    class TestDefault<T>
        {
            public T foo()
            {
                T t = null; //???
                return t;
            }
        }

    如果我们用int型来绑定泛型参数,那么T就是int型,那么注释的那一行就变成了 int t = null;显然这是无意义的。为了解决这一问题,引入了default关键字:

    class TestDefault<T>
        {
            public T foo()
            {
                    return default(T);
            }
        }

       [Serializable]
        public class ResponseBase
        {
    
    
            public ResponseBase()
            {
                Ok = true;
                Result = "Ok";
                Code = EStatusCode.Ok;
            }
    
            /// <summary>
            /// 默认状态
            /// </summary>
            public bool Ok { get; set; }
    
            /// <summary>
            /// 状态码
            /// </summary>
            public string Code { get; set; }
    
            /// <summary>
            /// 异常说明;正常时为空
            /// </summary>
            public string Result { get; set; }
    
            /// <summary>
            /// 其它标签
            /// </summary>
            public string TagValue { get; set; }
    
            /// <summary>
            /// 当前第几页
            /// </summary>
            public int PageIndex { get; set; }
    
            /// <summary> 分页字符串
            /// </summary>
            public string PagingStr { get; set; }
    
            /// <summary>
            /// 共多少条数据
            /// </summary>
            public int PageSum { get; set; }
            /// <summary>
            /// 总个数
            /// </summary>
            public int TotalCount { get; set; }
    
    
    
            public int TempValue { get; set; }
    
        }
    
        [Serializable]
        /// <summary>
        /// 响应数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public class ServiceResponse<T> : ResponseBase
        {
            public ServiceResponse()
            {
                Data = default(T);
            }
    
            /// <summary>
            ///数据集合
            /// </summary>
            public T Data { get; set; }
    
        }
    
    
    
    -----------------------------------------
     ServiceResponse<int> result = new ServiceResponse<int>();
                try
                {
                    result.Data = stuIndexLearnBll.SubmitInterst(interst);
                }
                catch (Exception ex)
                {
                    ErrorHelper.InsertLog(new ErrorMessage()
                    {
                        UserId = interst.UserId,
                        CustomInfo = $"接口:SubmitInterst;参数 StuInterst:{JsonConvert.SerializeObject(interst)}",
                        MessageInfo = ex.Message,
                        StackTrace = ex.StackTrace
                    }.ToObString());
                    result.Code = EStatusCode.ErrorElse;
                    result.Ok = false;
                    result.Result = "";
                }
                return result;
  • 相关阅读:
    PostgreSQL中的partition-wise join
    Partition-wise join
    外观模式 门面模式 Facade 结构型 设计模式(十三)
    桥接模式 桥梁模式 bridge 结构型 设计模式(十二)
    组合模式 合成模式 COMPOSITE 结构型 设计模式(十一)
    创建型设计模式对比总结 设计模式(八)
    原型模式 prototype 创建型 设计模式(七)
    单例模式 创建型 设计模式(六)
    建造者模式 生成器模式 创建型 设计模式(五)
    抽象工厂模式 创建型 设计模式(四)
  • 原文地址:https://www.cnblogs.com/DSC1991/p/12022437.html
Copyright © 2011-2022 走看看