1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace test_20190902_1
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. HomeController home = new HomeController(); //创建对象 ; 先执行父类构造方法
  14. }
  15. }
  16. public class HomeController : BaseController
  17. {
  18. public HomeController()
  19. {
  20. Console.WriteLine("HomeController类的构造方法"); // 执行顺序 4
  21. }//构造方法
  22.  
  23. }
  24. public class BaseController : Controller {
  25.  
  26. public BaseController()
  27. {
  28. Console.WriteLine("BaseController类的构造方法"); // 执行顺序 3
  29. }//构造方法
  30. LogManager logdb = new LogManager(); //先执行属性,再 执行构造
  31. }
  32. //抽象类
  33. public abstract class Controller {}
  34. public class LogManager : DbContext<A> {
  35. public LogManager()
  36. {
  37. Console.WriteLine("LogManager类的构造方法"); // 执行顺序 2
  38. }//构造方法
  39. }
  40. public class DbContext<T> where T : class
  41. {
  42. public DbContext()
  43. {
  44. Console.WriteLine("DbContext类的构造方法"); // 执行顺序 1
  45. }//构造方法
  46.  
  47. //Virtual方法(虚方法)
  48. public virtual List<T> GetList()
  49. {
  50. return new List<T>();
  51. }
  52. }
  53. //public class DbContext<T> where T : class, new()
  54. //{
  55. // public DbContext() {
  56. // Console.WriteLine("DbContext类的构造方法"); // 执行顺序 1
  57. // }//构造方法
  58.  
  59. // //Virtual方法(虚方法)
  60. // public virtual List<T> GetList()
  61. // {
  62. // return new List<T>();
  63. // }
  64. //}
  65. public class A { }
  66.  
  67. //加new 和不加new 有什么不同?
  68.  
  69. }
  70.  
  71. //----------
    //不包含空构造函数 时候 ,编译不通过

public class A {
public A()
{

  1.  

}
public A(string str)
{

  1.  

}
}

  1.  
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace test_20190902_2
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. UserManager userdb = new UserManager(); //创建对象
  14.  
  15. var t = userdb.GetFirst("test"); //继承类可以使用父类方法
  16.  
  17. }
  18. }
  19. public class A{
  20. int z1 { get; set; }
  21. int z2 { get; set; }
  22. }
  23. public class UserManager : DbContext<A> { }
  24.  
  25. // T是类型
  26. public class DbContext<T> where T : class
  27. {
  28. public object Db;//用来处理事务多表查询和复杂的操作
  29. public DbContext(){}
  30. public virtual T GetFirst(string str)
  31. {
  32. //return default(T);等同于 return null;
  33. return null;
  34. // Db.Queryable<T>().First(whereExpression);
  35. //return new T(); //T是不同类,要返回不同类的对象时这种方法错误
  36. }
  37. }
  38.  
  39. }
  1. public static void test<T>(T A, T B) where T : class, new()
  2. {
  3. T temp = new T();
  4. object value;
  5. System.Reflection.PropertyInfo[] obj1_s = A.GetType().GetProperties(); //获得该对象所有属性名
  6. for (int i = ; i < obj1_s.Length; i++)
  7. {
  8. //temp =A;
  9. value = obj1_s[i].GetValue(A); //获得 第一个对象的 第一个属性值
  10. obj1_s[i].SetValue(temp, value, null); //设置 第二个对象的 第一个属性值
  11.  
  12. // A = B
  13. value = obj1_s[i].GetValue(B);
  14. obj1_s[i].SetValue(A, value, null); //设置 第二个对象的 第一个属性值
  15.  
  16. //B =temp
  17.  
  18. value = obj1_s[i].GetValue(temp);
  19. obj1_s[i].SetValue(B, value, null); //设置 第二个对象的 第一个属性值
  20. }
  21.  
  22. }
  1. public class ABC
  2. {
  3. int abc { get; set; }
  4. }
  5. void fun3()
  6. {
  7. fun2<ABC>(new ABC());
  8. }
  9. void fun2<T>(T abc) where T : class,new()
  10. {
  11. fun1<T>(abc);
  12. }
  13.  
  14. void fun1<T>(T abc) where T:class,new()
  15. {
  16. abc = new T();
  17. }

C# 泛型 new{ }??? //加new 和不加new 有什么不同? new() 约束的更多相关文章

  1. new对象时,类名后加括号与不加括号的区别

    [1]默认构造函数 关于默认构造函数,请参见随笔<类中函数> 请看测试代码: 1 #include <iostream> 2 using namespace std; 3 4 ...

  2. C++中创建对象的时候加括号和不加括号的区别

    c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new My ...

  3. 详解变量声明加 var 和不加 var 的区别

    在全局作用域中声明变量加 var 关键字和不加 var ,js 引擎都会将这个变量声明为全局变量,在实际运行时,两种声明方式的变量的行为也是几乎一致的.但是在全局作用域下是否声明一个变量的 时候加va ...

  4. JS声明对象时属性名加引号与不加引号的问题

    般情况下属性名加引号和不加引号是都可以的,效果是一样的. var obj = { name : '你好', 'age' : 1, }; document.write( obj['name'] + '& ...

  5. Java中主类中定义方法加static和不加static的区别

     Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 ...

  6. js中加“var”和不加“var”的区别

    JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: var x // x 为 undefined var x = 6; // x 为数字 var x = "Bill&q ...

  7. 【转】new对象时,类名后加括号和不加括号的区别

    请看测试代码: #include <iostream> using namespace std; // 空类 class empty { }; // 一个默认构造函数,一个自定义构造函数 ...

  8. onclick时间加return和不加return的区别

    JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置. 而该值决定了当前操作是否继续.当返回的是true时,将继续操作.当返回是 ...

  9. 域名加www与不加www不一样结果的解决办法

    有些浏览器域名访问加www 与不加www出现的页面不一样.在aj请求的时候也不同.firefox与google新版本的都会自动加上www. 比如 访问haitaohua.com,但aj请求的时候是带w ...

随机推荐

  1. 【VS开发】在VS2010中开发ActiveX控件设置测试容器的方式

    在VS2010中开发ActiveX控件设置测试容器的方式 借鉴文章http://blog.csdn.net/waxgourd0/article/details/7374669 在VS2010中开发MF ...

  2. 快速生成500W测试数据库

    快速生成500W测试数据库: 创建测试表: DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_ ...

  3. IIS web服务器与ASP.NET

    参考教程:MVC网站项目发布到IIS服务器 https://jingyan.baidu.com/article/92255446574e11851648f4e4.html https://blog.c ...

  4. C语言 --- 高级指针

    1. 指针赋值: C语言允许使用赋值运算进行指针的赋值,前提是两个指针具有相同的类型.                 int i,*p,*q;                 p = &i; ...

  5. Springboot2.0加载指定配置文件@PropertySource的使用

    1. 在resouces下编写待加载的配置文件 这里使用person.properties # String person.last-name=john # int person.age=112 # ...

  6. centos部署LVS负载均衡直接路由DR模式

    环境: 在vm里开三个虚拟机 负载调度器:10.0.3.102 真实服务器1:10.0.3.103 真实服务器2:10.0.3.104 虚拟ip: 10.0.3.99 (用来飘移) 负载调度器上 if ...

  7. decode与case when 函数

    百度百科: DECODE函数,是ORACLE公司的SQL软件ORACLE PL/SQL所提供的特有函数计算方式,以其简洁的运算方式,可控的数据模型和灵活的格式转换而闻名. DECODE 中的if-th ...

  8. phpmyadmin导入大容量.sql文件

    phpmyadmin导入大容量.sql文件 在phpmyadmin目录文件夹下建立一个文件夹,如importSqlFile 将想要导入的sql文件放入importSqlFile文件夹中 打开confi ...

  9. Python基础——函数进阶

    等待更新…………………… 后面再写

  10. N3_容易混淆的语法

    第一期   范围 -から-まで から-にかけて から-にわたって 词例 区别 -から-まで から-にかけて から-にわたって 时间范围 时间界限比较明确.不间断 不那么明确,大致的在这段时间,断断续续 ...