当前位置: 首页 > news >正文

做正规网站有哪些东莞市企业信息查询网

做正规网站有哪些,东莞市企业信息查询网,宁波网站开发公司电话,管理咨询公司的成本有哪些视频地址#xff1a;一期视频看透C#接口的全部特性及用法_哔哩哔哩_bilibili 强烈推荐学习C#和WPF的朋友关注此UP#xff0c;知识点巨多#xff0c;讲解透彻#xff01; 一、总览 public interface IOverall {/// summary/// 最普通的方法/// /summaryv…视频地址一期视频看透C#接口的全部特性及用法_哔哩哔哩_bilibili 强烈推荐学习C#和WPF的朋友关注此UP知识点巨多讲解透彻 一、总览 public interface IOverall {/// summary/// 最普通的方法/// /summaryvoid Foo();/// summary/// 属性/// /summarystring Name { get;set; }/// summary/// 索引器/// /summary/// param nameindex/param/// returns/returnsint this[int index] { get; set; }/// summary/// 事件/// /summaryevent EventHandler OnNameChanged;/// summary/// 带默认实现的方法/// /summaryvoid Bar() Console.WriteLine(Bar);/// summary/// 私有方法需要带默认实现/// /summaryprivate void NonPublicMethod1() Console.WriteLine(Private);/// summary/// 受保护方法需要带默认实现或者可以不实现继承后实现/// /summaryprotected void NonPublicMethod2() Console.WriteLine(Protected);/// summary/// 静态方法需要带默认实现/// /summarystatic void StaticMethod() Console.WriteLine(Static);/// summary/// 抽象静态方法/// /summarystatic abstract void AbstractStaticMethod();/// summary/// 静态虚方法需要带默认实现/// /summarystatic virtual void VirtualStaticMethod() Console.WriteLine(Virtual Static); } 二、带默认实现的方法 C# 8.0引入 如果接口的方法提供了一个默认实现那么实现该接口的类可以不实现此方法。 如果实现了此方法则会覆盖接口中的默认实现可以理解为接口中带默认实现的方法其实是virtual而类中的如果实现了此方法其实是override。 2.1 用法 参考以下代码 Test test new Test(); ((IFoo1)test).Foo1(); ((IFoo1)test).Foo2();public interface IFoo1 { void Foo1(){$这是{nameof(IFoo1)}中{nameof(Foo1)}的默认实现.Dump();}void Foo2(){$这是{nameof(IFoo1)}中{nameof(Foo2)}的默认实现.Dump();} }class Test : IFoo1 { public void Foo1(){$这是{nameof(Test)}中{nameof(Foo1)}的实际实现.Dump();} } 输出结果为 这是Test中Foo1的实际实现 这是IFoo1中Foo2的默认实现 对于带默认实现的方法如果类中不实现此方法调用时需要先将类转换成接口再调接口上的方法参考以下代码 Test test new Test(); ((IFoo1)test).Foo1(); ((IFoo2)test).Foo1();public interface IFoo1 {void Foo1(){$这是{nameof(IFoo1)}中{nameof(Foo1)}的默认实现.Dump();} }public interface IFoo2 {void Foo1(){$这是{nameof(IFoo2)}中{nameof(Foo1)}的默认实现.Dump();} }class Test : IFoo1,IFoo2 { } 接口IFoo1和IFoo2都有一个带默认实现的方法且名称相同类Test实现了IFoo1和IFoo2如果直接能访问到接口中的方法Foo1就会造成冲突。 2.2 应用场景 在不破坏影响已有实现的情况下可以添加新成员。这解决了在第三方已经大量使用了的接口上进行扩展带来问题的痛点。 2.3 private,带默认实现的方法 只能在接口内调用子接口实现接口的类中不可访问参考以下代码 Test test new Test(); ((IFoo1)test).Foo1();public interface IFoo1 { void Foo1(){Foo2();}private void Foo2(){$这是{nameof(IFoo1)}中{nameof(Foo2)}的默认实现.Dump();} }class Test : IFoo1 { } 2.4 protected,带默认实现的方法 可以在子接口中调用或者覆盖实现接口的类不可访问 参考以下代码 Test1 test1 new Test1(); ((IFoo2)test1).Foo2(); ((IFoo3)test1).Foo2();public interface IFoo1 { protected void Foo1(){$这是{nameof(IFoo1)}中{nameof(Foo1)}的默认实现.Dump();} }public interface IFoo2 : IFoo1 {void Foo2(){Foo1();} }public interface IFoo3 : IFoo1 {void Foo2(){Foo1();}new void Foo1(){$这是{nameof(IFoo3)}中{nameof(Foo1)}的默认实现.Dump();} }class Test1:IFoo2,IFoo3 { }运行结果 这是IFoo1中Foo1的默认实现 这是IFoo3中Foo1的默认实现 2.5 Static,带默认实现的方法 静态方法一般用于处理泛型类 参考以下代码 var student IDeserializableStudent.Deserialize({\Id\:42,\Name\:\Jack\}); student.Dump();interface IDeserializableT {static T? Deserialize(string json) JsonSerializer.DeserializeT(json); }class Student : IDeserializableStudent {public int Id {get;set;}public string Name { get; set; } } 运行结果 三、static abstract,抽象静态方法 在接口可不实现实现此接口的类必须要实现此方法 应用场景 3.1 约束子类具有方法Deserializable实现序列化功能 interface IDeserializableT {static abstract T Deserializable(string json); }class MyDataModel : IDeserializableMyDataModel {public static MyDataModel Deserializable(string json){return JsonSerializer.DeserializeMyDataModel(json);} } 3.2 如工厂类中具有方法Create提供创建功能 interface IFactoryT{static abstract T Create();}class ClassToBeCreated{}class ClassWithFactoryMethod : IFactoryClassToBeCreated{public static ClassToBeCreated Create(){return new ClassToBeCreated();}} 3.3 约束子类实现静态单例 interface ISingletonT where T : ISingletonT{static abstract T Instance { get; }}class SingletonClass : ISingletonSingletonClass{private static readonly LazySingletonClass instanceHolder new LazySingletonClass();public static SingletonClass Instance instanceHolder.Value;} 3.4 逻辑运算法提供自定义逻辑运算 interface IOperatorsT where T : IOperatorsT{static abstract T operator (T left, T right);static abstract T operator -(T left, T right);}class MyNumber : IOperatorsMyNumber{public int Value { get; }public MyNumber(int value){Value value;}public static MyNumber operator (MyNumber left, MyNumber right){return new MyNumber(left.Value right.Value);}public static MyNumber operator -(MyNumber left, MyNumber right){return new MyNumber(left.Value - right.Value);}} 四、static virtual 静态虚方法 通常用于泛型调用的场合 特性 1.子类如果未实现具体方法调用时调用接口中的方法 2.子类如果实现具体方法调用时调用子类中的方法 代码 TestCallerInstance(new A()); TestCallerInstance(new B()); ITestInterfaceGenricA.TestCallerGeneric(); ITestInterfaceGenricB.TestCallerGeneric();static void TestCallerInstanceT(T t) where T : ITestInterface {Console.WriteLine(T.TestString1()); }public interface ITestInterface {static virtual string TestString1(){return TestString1 ITestInterface;} }public interface ITestInterfaceGenricTSelf where TSelf : ITestInterfaceGenricTSelf {public static void TestCallerGeneric(){Console.WriteLine(TSelf.TestString2());}static virtual string TestString2(){return TestString2 ITestInterfaceGeneric;} }public class A : ITestInterface, ITestInterfaceGenricA {public static string TestString2(){return TestString A;} }public class B : ITestInterface, ITestInterfaceGenricB {public static string TestString1(){return TestString1 ITestInterface B;} } 运行结果 TestString1 ITestInterface TestString1 ITestInterface B TestString A TestString2 ITestInterfaceGeneric
http://www.yingshimen.cn/news/86301/

相关文章:

  • 检察院网站建设标书手机网站报价单模板下载
  • vps网站解析域名网站网站建设的原则有哪些
  • 外贸 网站 seo合肥网站建设信息
  • 网站建设 图标wordpress 目录配置
  • 网站视频主持人制作做视频网站要什么
  • 重庆市建设网站首页虚拟主机怎么设计网站吗
  • 银锭网那个网站做的 好做的好的排版网站
  • 网站建设二次开发怎么样合肥网站建设创优
  • 成都网站设计开发做得好短期网站建设培训
  • 建平县营商环境建设局网站什么是优化设计
  • 旅行社网站建设wordpress导入工具
  • 服务类型网站开发需要哪些技术网站模版更新公告
  • 周口建设公司网站北京英文网站建设的原则
  • 什么是建设网站的主题网站安全加固
  • 物业网站模板下载富阳网站建设
  • 长春长春网站建设wordpress 报名 插件
  • 洛阳做网站找哪家好杭州app定制
  • 衙门口网站建设南京网页制作
  • 杭州自助建站阿里云服务器免费试用
  • 网站建设适合女生吗濉溪县最新通告今天
  • wordpress怎么生成网站地图室内设计联盟官方网站入口
  • 网站建站建设上海黔文信息科技有限公司30动漫网站源码免费
  • 重庆网站备案多久天津西青区离哪个火车站近
  • 网站建设 seo sem东莞网络推广平台
  • 网站建设的公司无锡网站制作联系方式
  • 如可做网站在哪个网站做ppt模板赚钱
  • 解决网站提示有风险程序员做的简单的网站
  • 网站设计服务dede搭建网站教程
  • 企业网站建设条件网络营销的特点不包括以下
  • 网站建设服务包含内容c2c代表平台有哪些