推断类型var

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推断类型var相关的知识,希望对你有一定的参考价值。

1、为什么使用推断类型var

var可以根据变量的初始值自动推断局部变量类型,当无法确定所用变量的具体类型时可使用var

2、如何使用推断类型var

客户端代码

        static void Main(string[] args)
        {
            var a = 10;
            var className = "var的学习";
            //var student = new Student{StudentName = "王华", Age = 27};//创建对象
            var student = new { StudentName = "王华", Age = 27 };//匿名类
            Console.WriteLine("{0}个人在进行{1}, 其中{2}, {3}岁,掌握的最好!", a, className, student.StudentName, student.Age);
            Console.ReadLine();
        }

 

 

Sudent类定义

    public class Student
    {
        public string StudentName { get; set;}
        public int Age { get; set;}
        public int StudentId { get; set;}
    }

输出

技术分享

由此可见var可以根据变量的值来推断变量的类型

注:匿名类:匿名类不需要提前编写类及其成员,并且只能添加属性不能添加方法,匿名类并不是无名,而是编译器在后台生成类名

 

3、推断类型var使用时注意的问题

(1) 使用var的变量必须为局部变量,成员变量无法用var修饰

(2) 使用var时该变量必须同时初始化,并且不能为空

(3) var本身不是定义一个新类型

 

4、var和object的区别

var和object很类似,但是有一些区别,var在推断变量的类型后不能再对该变量进行其他类型的赋值,object没有这点限制

        static void Main(string[] args)
        {
            object a = 10;
            a = "应该对了";

            var b = 10;
            b = "错了吗?";
        }

前者a编译没问题,后者b有问题,由此可以看出var和object的区别

以上是关于推断类型var的主要内容,如果未能解决你的问题,请参考以下文章

在 Java / Eclipse 中推断变量类型,如 C# 的“var”

java10新特性:本地变量(local variable)-var类型推断

jdk11新特性——局部变量类型推断(var ”关键字”)

jdk11新特性——局部变量类型推断(var ”关键字”)

局部变量类型推断未被识别

JDK11 | 第三篇 : 局部变量类型推断