• 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;
  • 相关阅读:
    TSQL 中游标应用示例
    [转]浅谈数据库设计技巧(上)、(下)
    ASP.NET页面打印技术的总结(转)
    深入理解RIA(转)
    三层架构的bussiness层没用?
    ASP.NET中常用的26个优化性能方法(转)
    基于MapX的GIS动态操作与实现
    web项目经理手册项目经理的工作内容(转)
    ASP.NET中上传文件到数据库
    学习.net中I/O的心得第一篇 初探I/O(转)
  • 原文地址:https://www.cnblogs.com/DSC1991/p/12022437.html
Copyright © 2020-2023  润新知