C# 重载,重写,代理,枚举实例
1.日期说法时区不同所取到的值也不同, 多个国的服务器要注意这个玩意
DateTime newDate = DateTime.Now;
Console.WriteLine(newDate.ToString());
Console.WriteLine(newDate.ToString(CultureInfo.InstalledUICulture));//根据当前操作系统,时区选择
Console.WriteLine(newDate.ToString("", CultureInfo.InvariantCulture));
2.代理方法, 参数函数化 , 哦原来这就是代理呀!
class Program
{
Main方法
static void Main(string[] args)
{
@Class3 obj1 = new Class3();
var num1 = ;
var num2 = ;
var str = obj1.subFun(delegate (int aa)
{
return num1 + num2 + aa;
}); Console.WriteLine(str);
}
} public class @Class3
{ public string subFun(Func<int, int> funcName)
{
var aa = ;
int cc = funcName(aa);
return cc.ToString();
}
}
3.重写 重载 区别 重写什么类型,就走那个类的重写方法
class Program
{
Main方法
static void Main(string[] args)
{
/**
* 重载 同类/子类中 override 同名不同参
* 重写 同类/子类中 new 同名同参
* 利用反射 可反射出父类子实现对象中子类中的 属性,方法
* **/ @Class1 obj = new @Class1();
obj.overrideFunc("@Class1");
obj.overrideFunc("", "");
Console.WriteLine(obj.message); @Class2 obj1 = new @Class2();
obj1.overrideFunc("@Class2");
obj1.overrideFunc("", "");
obj1.overrideFunc("", "", "");
Console.WriteLine(obj1.message1); @Class1 obj2 = new @Class2();
obj2.overrideFunc("@Class1:@Class2");
obj2.overrideFunc("", "");
Console.WriteLine(obj2.message);
Console.WriteLine(JsonConvert.SerializeObject(obj2)); Type typeObj = obj2.GetType();
PropertyInfo proObj = typeObj.GetProperty("message1");
Console.WriteLine(proObj.GetValue(obj2));
}
} public class @Class1
{
public string message { get; set; } = "@Class1";
public void overrideFunc(string message)
{
Console.WriteLine(message);
} public void overrideFunc(string message, string message2)
{
Console.WriteLine($"{message},{message2}我是被@Class1重载的");
}
} public class @Class2 : @Class1
{
public string message1 { get; set; } = "@Class2"; public new void overrideFunc(string message)
{
Console.WriteLine($"{message}我被重写过");
}
public void overrideFunc(string message, string message1, string message2)
{
Console.WriteLine($"{message},{message2},{message2}我是被@Class2重载的"); } }
4.枚举 使用 其实需要一个扩展方法,来 名称转值,值转名称的
EnumType enumObj = EnumType.类型1;
Console.WriteLine(EnumType.类型1);
Console.WriteLine((int)Enum.Parse(typeof(EnumType), "类型1", true));
C# 重载,重写,代理,枚举实例的更多相关文章
- java的多态以及重载,重写,前期绑定,后期绑定
多态的定义: 一个类实例的相同方法在不同情形有不同表现形式.多态机制使具有不同内部结构的对象可以共享相同的外部接口.这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通 ...
- Java重载重写与实现方法的规则
这几天在实训过程中做到了一个题,这个题目问的是 非抽象类实现接口后,必须实现接口中的所有抽象方法,除了abstract外,方法头必须完全一致.这句话是错误的.然后在做错以后自己总结一下重载 重写 和实 ...
- 重载重写重定义-易混淆概念-C++编译器处理方式
1.函数重载 1)必须在同一个类中进行. 2)子类无法重载父类的函数,父类同名函数将被名称覆盖 3)重载是在编译期间根据参数类型和个数决定函数调用 2.函数重写 1)必须发生于父类与子类之间 2)并且 ...
- java代理模式实例讲解
下面这个是设计模式课上的例子: import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import ...
- java 方法的重载重写
面向对象有三大特性:封装,继承,多态 多态则需要满足三大条件1要有继承2要有重写3父类引用子类对象 很多人对方法的重载重写有很大疑问,下面我来介绍一下方法的重载重写 方法重载就是方法名称重复,加载参数 ...
- [Java]重载,重写以及继承,多态的区别
转自:http://android.blog.51cto.com/268543/53181 什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承. ...
- spring-AOP-ProxyFactoryBean代理的实例
1.一个代理模式的实例 通过 Proxy类进行代理 wait.java //定义一个接口 public interface wait { void say(); } //目标对象实现接口并重写方法 p ...
- 一个简单JDK动态代理的实例
动态代理的步骤: 创建一个实现了InvocationHandler接口的类,必须重写接口里的invoke()方法. 创建被代理的类和接口 通过Proxy的静态方法 newProxyInsatance( ...
- 一个简单 JDK 动态代理的实例
动态代理的步骤: 创建一个实现了 InvocationHandler 接口的类,必须重写接口里的 invoke()方法. 创建被代理的类和接口 通过 Proxy 的静态方法 newProxyInsat ...
随机推荐
- php手记之02-tp5请求参数读取三种方式
01-[推荐方式] 当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息.在Thinkphp5.1中,获取请求对象数据,是由think\Request类负责,在很多场合下并不需 ...
- mysql中的sql-mode导致的datetime类型字段不能为0000
问题描述: 在执行建表语句的时候,出现invalid default datetime value '0000-00-00 00:00:00',从字面意思看,就是不合法的默认值'0000-00-00 ...
- Zend Studio汉化失败,如何给Zend Studio进行汉化
首先,相信看我这篇博文的人也都遇到了和博主我一样的烦恼,就是汉化Zend Studio失败! 话不多说! 方案一,在线安装汉化包 Help–>Install New Software—>W ...
- Linux/CentOS下修改MAC地址
Linux/CentOS下修改MAC地址 摘自:https://blog.csdn.net/qq_33233768/article/details/64906265 2017年03月22日 11:06 ...
- Spring MVC Action参数类型 List集合类型(简单案例)
题目:定义一个员工实体(Employee),实现批量添加员工功能,在表单中可以一次添加多个员工,数据可以不持久化 1,新建一个项目 2, 然后选择Maven框架选择 maven-archetype-w ...
- [AI] 深度数学 - Bayes
数学似宇宙,韭菜只关心其中实用的部分. scikit-learn (sklearn) 官方文档中文版 scikit-learn Machine Learning in Python 一个新颖的onli ...
- OpenStack Smaug项目简介
1 项目简介 Smaug是一个OpenStack中提供应用数据保护服务的项目. 2 项目使命 在OpenStack中建立应用数据保护的标准和规范. 保护OpenStack中的任何资源以及资源的依赖项. ...
- Redis键通知机制
Redis键通知机制 一.概念 自从redis2.8.0以后出了一个新特性,Keyspace Notifications 称为“键空间通知”. 这个特性大概是,凡是实现了Redis的Pub/Sub的客 ...
- activity 工作流
https://blog.csdn.net/cs_hnu_scw/article/details/79059965 https://blog.csdn.net/xnf1991/article/deta ...
- AMD, CMD, CommonJS和UMD
我的Github(https://github.com/tonyzheng1990/tonyzheng1990.github.io/issues),欢迎star 今天由于项目中引入的echarts的文 ...