zoukankan      html  css  js  c++  java
  • C#-----var, object, dynamic的区别以及dynamic、ExpandoObject的使用

       1.var, object, dynamic

        var是C# 3中引入的,其实它仅仅只是一个语法糖。var本身并不是一种类型,其它两者object和dynamic是类型

        var声明的变量在赋值的那一刻,就已经决定了它是什么类型

    下面这样声明,就会有编译错误:

        var a = 1;

        a = "Test";

        object之所以能够被赋值为任意类型的原因,其实都知道,因为所有的类型都派生自object. 所以它可以赋值为任何类型

    同样的声明,下面就不会有编译错误:

        object a = 1;

        a = "Test";

        dynamic它是C#引入的新类型,它的特点是申明为dynamic类型的变量,不是在编译时候确定实际类型的, 而是在运行时

    下面这样声明,不会有编译错误,运行时会报错:

        dynamic a = "test";

        a++;

        Console.WriteLine(a);

       2.dynamic、ExpandoObject

       在传递对象,但是又不想创建一个class或者struct的时候,ExpandoObject就是一个非常好的选择

    using System;
    using System.Collections.Generic;
    using System.Dynamic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApp2
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<ExpandoObject> edoList = new List<ExpandoObject>();
                dynamic edoFirst = new ExpandoObject();
                edoFirst.userName = "yyx";
                edoFirst.userPwd = "123456";
                edoList.Add(edoFirst);
    
                dynamic edoSecond = new ExpandoObject();
                edoSecond.userName = "zy";
                edoSecond.userPwd = "654321";
                edoList.Add(edoSecond);
    
                foreach (dynamic edo in edoList)
                {
                    Console.WriteLine(edo.userName+" "+ edo.userPwd);
                }
                Console.ReadLine();
            }
        }
    }

       ExpandoObject使用注意:

    • ExpandObject不能用于太复杂的对象
    • ExpandObject的使用范围必须要短
    • ExpandObject的使用场合最好贴近程序的终端
  • 相关阅读:
    Spring使用@Value注解各种类型的值
    Jdom生成xml文件时的特殊字符问题
    将博客搬至CSDN
    ubuntu/mint添加字体
    linux保持ssh连接
    servlet 重定向与转发区别
    u盘写保护
    修改默认终端
    sudo apt-get update 无法获得锁
    logback多线程日志MDC
  • 原文地址:https://www.cnblogs.com/fengfuwanliu/p/10556907.html
Copyright © 2011-2022 走看看