C#中何时使用dynamic
背景:比如说,有一个方法,有很多参数,且有时候只需要其中的某几个参数,有时候需要使用全部,甚至有时候一个都不需要,这时候写一个长长的参数列表一点都不酷,且容易 出错,这时候就需要考虑C#的dynamic类型来作为参数了。在操作sql语句的操作时尤为常见。
代码如下:
public static void TestDynamic()
{
dynamic d = new ExpandoObject();
d.Name = "sharpL";
d.Age = ;
d.City = "北京";
dosth(d);
} public static void dosth(dynamic d1)
{
string tmp = "";
//把动态类型强制转换为字典类型
var kvs = (IDictionary<string, object>)d1;
if(kvs.ContainsKey("Name"))
{
tmp += " 我的名字是"+kvs["Name"];
}
if (kvs.ContainsKey("Age"))
{
tmp += " 我的年龄是" + kvs["Age"];
}
if (kvs.ContainsKey("Fun"))
{
tmp += " 我的爱好是" + kvs["Fun"];
}
if (kvs.ContainsKey("City"))
{
tmp += " 我的城市是" + kvs["City"];
}
Console.WriteLine(tmp);
}
}
如上,我们可能只输入姓名,而有时可能需要输入所有的信息,用dynamic只需要一个方法就可以解决了,又不用输入长长的参数列表。
这种情况常用于数据库查询或插入操作,尤其是插入操作中,有些表格有很多字段,我们总不能将每个字段都作为一个参数,那样真的蛮傻的,上面的代码只是一个例子。
C#中何时使用dynamic的更多相关文章
- Eclipse中添加web dynamic project
因为我的eclipse版本是kepler service release 2,所以我用了这个链接,http://download.eclipse.org/releases/helios/ 参考链接: ...
- 教你在你的应用程序中扩展使用dynamic类型
教你在你的应用程序中扩展使用dynamic类型 相信大家在开发中经常会接触到mvc中的ViewBag,有心的同学会,发现这就是一个dynamic类型,查看源码一谈究竟,本文也是根据dynamic来扩展 ...
- C#中var和dynamic
var与dynamic这两个关键字,只是看起来很相似,仅此而已!var表示“变量的类型是在编译时决定的”,但是dynamic表 示“变量的类型是在运行时决定的”.因此,dynamic与var具有截然不 ...
- eclipse中如何修改dynamic web module version
java项目中,若切换服务器,经常会涉及到动态web模块版本的问题. 比如:新建了web项目,开始使用tomcat服务器,但是后来使用jboss服务器,就会出现:Project facet ...
- iOS中 @synthesize 和 @dynamic 区别
OC object-c 为了让java的开发者习惯 使用.的操作,所以可以将接口类中的变量 使用@property来声明属性.但是在.h中声明的属性,必须在.m中使用@synthesize或者@dyn ...
- C#4.0中var和dynamic的区别
1. var表示“变量的类型是在编译时决定的”, var让你在初始化变量时少输入一些字,编译器会根据右值来推断出变量的类型, var只能用于局部变量的定义,你不能把类的属性定义成 var,也不能把方法 ...
- Spark中的Phoenix Dynamic Columns
代码及使用示例:https://github.com/wlu-mstr/spark-phoenix-dynamic phoenix dynamic columns HBase的数据模型是动态的,很多系 ...
- Eclipse 中 不能创建 Dynamic web project
工作要涉及web开发,之前下载的java SE (我的是luna) 版本默认无法新建web项目,也就是找不到Dynamic Web ,在网上看了些解决办法,最终却是解决了问题,说到底就是安装一些用于E ...
- Eclipse中添加web dynamic project【菜鸟学JAVA】
很多eclipse版本是不能直接新建web dynamic project的,需要从网上找插件或更新.我的Eclipse的版本是(Version: 3.7.0) 比较方便的是在Help → Insta ...
- iOS中 @synthesize 和 @dynamic
今天写点过时的东西,我记得 这个是xcode 4 那个年代的事情了,没想到有时候大家还会被问到.可能目的就是看看你是从是么时候才开始接触iOS的. 在声明property属性后,有2种实现选择 @s ...
随机推荐
- c#学习系列之字段(静态,常量,只读)
C#静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量.static变量在对象被实例化时创建,通过对象进行访问一个类的所 ...
- 牛客网Java刷题知识点之Iterator和ListIterator的区别
不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=21 ...
- Unity AssetBundle笔记
1.入门: Resources:表示U3D自动将资源打成一个AssetBundle包,所有放在Resources下的文件夹都会打成一个AssetBundle包,资源非常大,Resources文件夹在真 ...
- Java反射 : Declared的作用 ( 例如 : getMethods和getDeclaredMethods )
import com.tangcheng.learning.service.lock.annotation.KeyParam; import lombok.Data; import lombok.Eq ...
- 一、使用MyBatis
定义sql映射xml文件 userMapper.xml文件的内容如下: <!--头文件--> <!DOCTYPE mapper PUBLIC "-//mybatis.org ...
- Java编程基础-选择和循环语句
一.选择结构语句 选择结构:也被称为分支结构.选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码. Java语言提供了两种选择 ...
- IOS拉伸之底盖设置
1.选定拉伸 UIImageView *fieldImage=[[UIImageViewalloc]initWithFrame:CGRectMake(37,48+35,240, 32)]; field ...
- 总结SQL Server窗口函数的简单使用
总结SQL Server窗口函数的简单使用 前言:我一直十分喜欢使用SQL Server2005/2008的窗口函数,排名函数ROW_NUMBER()尤甚.今天晚上我在查看SQL Server开发的相 ...
- vue+element ui项目总结点(三)富文本编辑器 vue-wangeditor
1.参考 https://www.npmjs.com/package/vue-wangeditor 使用该富文本编辑器 <template> <div class="egi ...
- JavaScript的语音识别
有没有想过给您的网站增添语音识别的功能?比如您的用户不用点鼠标,仅仅通过电脑或者手机的麦克风发布命令,比如"下拉到页面底部",或者"跳转到下一页",您的网站就会 ...