C# Dynamic

Dynamic 类型在可以绕过编译器的类型检查,改为在运行时解析。

例:类型A,B都有属性Name,Dodynamic的参数可以是A也可以是B,

o.Name在编译时不会报错,在运行时根据传入的参数(A或B)执行A.Name或者B.Name.

有的朋友可能会说可以让A和B实现一个借口或继承一个基类,这确实也可以,但是我现在在介绍Dynamic。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace dynamic类型
{
    class Program
    {
        static void Main(string[] args)
        {
            A a = new A();
            a.Name = "dog";
            Dodynamic(a);
            Console.ReadKey();
        }

        private static void Dodynamic(dynamic o)
        {
            Console.WriteLine(o.Name);
        }
    }
    public  class A
    {
        public string Name { set; get; }
    }
    public  class B
    {
        public string Name { set; get; }
    }
}
时间: 2024-12-18 02:36:15

C# Dynamic的相关文章

IOS学习笔记之关键词@dynamic

@dynamic这个关键词,通常是用不到的. 它与@synthesize的区别在于: 使用@synthesize编译器会确实的产生getter和setter方法,而@dynamic仅仅是告诉编译器这两个方法在运行期会有的,无需产生警告. 假设有这么个场景,B类,C类分别继承A类,A类实现某个协议(@protocol),协议中某个属性( somePropety )我不想在A中实现,而在B类,C类中分别实现.如果A中不写任何代码,编译器就会给出警告: “use @synthesize, @dynam

eclipse中,项目有红叉之-Cannot change version of project facet Dynamic Web Module to 3.1

1.打开Problems查看错误原因Window->Show View->Other->General->Problems 2.查看问题 3.发现是Cannot change version of project facet Dynamic Web Module to 3.1 4.根据2里截图的Resource,得到是哪个项目,项目右击->Properties->Project Faces->Dynamic Web Module,更据相应Dynamic Web M

Eclipse dynamic web project 插件

下载了Eclipse Oxygen   发现没有Dynamic web  Project 首先我们先了解下Dynamic  Web Project  If you want to create a content-based Web application that does not contain any dynamic content (such as servlets, JSP files, filters, and associated metadata) you might prefe

BZOJ 1901 Dynamic Rankings

题面: 1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 8088  Solved: 3364[Submit][Status][Discuss] Description 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1 ],a[i+2]--a[j]中第k小的数是多少(1≤k≤j-i+1),并且,你可以改变

c# 中dynamic的使用

dynamic 是c#中的一个关键字,用来表示动态类型,即在运行时确定类型. dynamic value: Random ran = new Random();//生成随机数 value = ran.Next(0, 10) > 5 ? (dynamic)1 : (dynamic)"A"; dynamic display = value + value; Console.WriteLine(value); 程序输出随着随机数变化而不确定, 当随机数小于5时 value = 1,di

[转]解决Cannot change version of project facet Dynamic web module to 2.5

我们用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servlet还是2.3的,而一般现在至少都是2.5,在Project Facets里面修改Dynamic web module为2.5的时候就会出现Cannot change version of project facet Dynamic web module to 2.5,如图: 其实在右边可以看到改到2.5需要的条件以及有

动态Entity Framework查询:Dynamic Query 介绍

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 Dynamic Query是一个支持动态Entity Framework查询的库.它的设计初衷是为了减少在管理系统中大量出现的对一个数据集进行查找.排序.分页的这类场景的开发工作量,其设计思想是"markup is code ".通过

@synthesize @dynamic 的区别

@property有两个对应的词,@synthsize @dynamic如果都没写,那么默认就是@synthsize var = _var; @synthsize 如果没有手动实现setter getter方法那么自动生成 ,自动生成_var变量 @dynamic告诉编译器:属性的setter,getter方法有用户自己实现,不自动生成.假如一个属性被声明为@dynamic var 那么如果不实现setter getter方法,编译阶段不会报错,但是一旦使用instance.var = some

Dynamic attention in tensorflow

新代码在contrib\seq2seq\python\ops\attention_decoder_fn.py ? ? 和之前代码相比 不再采用conv的方式来计算乘,直接使用乘法和linear ? ? 给出了两种attention的实现 传统的"bahdanau": additive (Bahdanau et al., ICLR'2015) Neural Machine Translation by Jointly Learning to Align and Translate 以及&

dynamic 用法

private static string GetNameValue(object value) { dynamic obj = value; try { return obj.Name; } catch { return null; } }