var与dynamic

var和dynamic类型表面上相似,但实际上是非常不同的:
1.var说:“让编译器去确定我的类型吧”
2.dynamic说:“让运行时去确定我的类型吧”

例如:

dynamic x = "hello";  // 静态类型是dynamic,运行时类型是string
var y = "hello";      // 静态类型是string,运行时类型是string
int i = x;            // 运行时错误(无法将string转换为int)
int j = y;            // 编译时错误(无法将string转换为int)

一个由var声明的变量的静态类型可以是dynamic:

dynamic x = "hello";
var y = x;            // y的静态类型是dynamic
int z = y;            // 运行时错误(无法将string转换为int)

示例:

using System;

namespace VarAndDynamic
{
    class Program
    {
        static void Main(string[] args)
        {
            dynamic x = "hello";
            var y = "hello";
            
            Console.WriteLine($"x的运行时类型为:{x.GetType()}");
            Console.WriteLine($"y的运行时类型为:{y.GetType()}");

            try
            {
                int i = x;
            }
            catch (Exception e)
            {

                Console.WriteLine($"int i = x,\t{e.Message}");
            };
        }
    }
}

运行结果:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值