c# Linq 中为什么非要用var

    xiaoxiao2021-12-14  22

    因为Linq的query中的是不定类型,返回的是不定类型的指针,即不定类型的引用。在这种情况下,只能用var类型的变量存储这个不定类型的指针。var 声明的是 一个变量对象,即一个变量对象的引用(指针),我们一般以对象的引用(指针)来代表这个对象。

    下面这段代码充分说明了var 对象是不定类型的引用。因为是不定类型的,所以什么类型的对象的引用都可以存。

    using System; namespace VarUse { class Program { public static void Main(string[] args) { int i = new int();//i 是int 对象(引用) char c = new char();//c 是char对象(引用) var v = i;//var 对象(引用)中可以存int对象(引用) v = c;//var 对象(引用)中也可以存char对象(应用) Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }

    var 对象(引用)中可以存不定对象的引用。也可以存不定类型的数组对象(引用)。下面这段代码说明了这一点

    using System; namespace VarDemo { class Program { public static void Main(string[] args) { int[] i = new int[10]; var v1 = i;//var 对象(引用)中可以存整型数组对象( 引用). char[] c = new char[10]; var v2 = c;//var 对象(引用)中可以存字符数组对象( 引用). Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } } 那么,Linq中返回的不定类型的数组对象就可以存储在var对象里了。

    using System; using System.Linq; namespace SimpleLinq { class Program { public static void Main(string[] args) { //following code block builds an array //consisting of random digits from inclusive zero //to exclusive one hundred Random r = new Random(); int n; n = 100; int[] array = new int[n]; int i; for(i=0;i<n;i++) array[i] = r.Next(100); //select the numbers which are greater than 50 out. var nums = from element in array//as you see, where(element>50)//var object(reference) reserves the array object(reference) select element;//that contains the selected numbers; //in Linq,the returned array is recognized as indefinite type. //end select foreach( int num in nums) Console.WriteLine(num); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }

    转载请注明原文地址: https://ju.6miu.com/read-970439.html

    最新回复(0)