c# 方法中dynamic类型参数的问题
2021/7/2 17:51:18
本文主要是介绍c# 方法中dynamic类型参数的问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在用dynamic做为一个方法的参数时,在方法内调用基于接口的对象方法,该方法对来源于接口的父接口时一不小心会报该方法未被申明的错误,闲话不多说,直接看源码。
1.首先先建一个接口
public interface ISendBase { void SendDataBase(string data); }
2.再创建一个接口,并继承上述的接口
public interface ISend : ISendBase { void SendData(string data); }
3.创建一个继承接口的实现
public class SendData : ISend { public void SendDataBase(string data) { Console.WriteLine(data); } void ISend.SendData(string data) { Console.WriteLine(data); } }
4.创建一个用于调用实现接口类的方法,且该方法以dynamic类型作为参数
public void Send(dynamic data) { ISend send = new SendData(); send.SendDataBase(data.ToString()); }
注意此种写法调用将会报如下错误
你将会被这头痛,明明在接口的基类内有该方法的申明,并且编译通过无任何语法错误,为何呢?然用如下写法却能成功执行
public void Send(dynamic data) { ISend send = new SendData(); string strData = data.ToString(); send.SendDataBase(strData); }
原因:dynamic类型作为一个动态类型,只有在运行过程中方可知其类型,在采用第一种调用时在执行过程时传入的参数未知类型的,然在接口中并未有dynamic类型的参数方法申明,故而报错,然第二种先通过一个变量来接收dynamic类型参数并将其强制转换了,至此对其明确了类型,然后再将变量传入调用方法中就能找到相应的方法。
这篇关于c# 方法中dynamic类型参数的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#