程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#關鍵字var是什麼,在何種情況下使用,

C#關鍵字var是什麼,在何種情況下使用,

編輯:C#入門知識

C#關鍵字var是什麼,在何種情況下使用,


從.NET 3.0開始,在方法內部可以使用var關鍵字聲明局部變量。var關鍵字到底是什麼?在何種情況下使用呢?
 

□ var關鍵字用來隱式地聲明一個數據類型,變量類型是在編譯期確定的,而不是在運行時確定的

聲明一個var變量a,把整型數10賦值給a,接著把一個字符串賦值給變量a。運行發現報錯:無法將類型string隱式轉換為int。

這說明:用var聲明一個變量時,雖然不是顯式聲明,但在編譯期,已經確定了變量的類型。

 

通過反編譯同樣可以證明以上推斷。

→把a = "abc";這行代碼去掉,並生按F6生成解決方案。
→打開"VS2012開發人員命令提示",輸入如下命令

→在"解決方案資源管理器"中右鍵項目的名稱,選擇"在文件資源管理器中打開文件夾",再點擊bin,Debug文件夾,在地址欄中賦值Debug文件夾的路徑
→點擊"IL DASM"的文件--打開,輸入剛才拷貝的Debug文件夾路徑,再選擇.exe後綴的可執行文件,雙擊"Main:void(string[])"。在IL代碼中:

可以看出:變量a已經是Int類型,並且是一個局部變量。

 

□ var關鍵字讓編碼更簡短

對於一些名稱比較長的類,當創建類實例的時候,用var關鍵字看上去更簡短。當然這個理由是比較牽強的~~

     class Program
    {
        static void Main(string[] args)
        {
            HelloIHaveALongLongName<string, string> obj = new HelloIHaveALongLongName<string, string>();
        }
    }
    public class HelloIHaveALongLongName<T, T>
    {
        public string Name;
    }

 

如果使用var關鍵字,就變成:

var obj = new HelloIHaveALongLongName<string, string>();
obj.Name = "hello";

可見,用var關鍵字,讓寫法更簡短,並且var變量是一個強類型。

 

□ var關鍵字與匿名類型

通過LINQ表達式返回一個匿名類型。

        static void Main(string[] args)
        {
            string[] strs = {"hello", "world", "nice", "to", "meet", "you"};
            object o = from s in strs
                where s.Length > 3
                select new {s.Length, s};
        }

以上,object類型變量o並不是一個強類型變量。
   


如果我們用強類型的類來接收LINQ返回的集合。

    class Program
    {
        static void Main(string[] args)
        {
            string[] strs = {"hello", "world", "nice", "to", "meet", "you"};
            IEnumerable<SomeData> o = from s in strs
                where s.Length > 3
                select new SomeData() {Key = s.Length, Value = s};
            foreach (SomeData item in o)
            {
                Console.WriteLine(item.Key);
            }
        }
    }
    public class SomeData
    {
        public int Key;
        public string Value;
    }

以上,在IEnumerable<SomeData>類型集合中,每一個集合元素都是強類型。

 

如果用var關鍵字來接收LINQ返回的匿名類型集合。

    class Program
    {
        static void Main(string[] args)
        {
            string[] strs = { "hello", "world", "nice", "to", "meet", "you" };
            var o = from s in strs
                    where s.Length > 3
                    select new { Key = s.Length, Value = s };
            foreach (var item in o)
            {
                Console.WriteLine(item.Key);
            }
        }
    }

以上,var類型變量o接收匿名類型集合,該集合的每個元素也是強類型。也就是說,編譯器在編譯的時候自動推斷類型。

 

總結:
○ 通過var關鍵字聲明的變量,變量類型是在編譯期確定的,而不是在運行時確定
○ 對於LINQ表達式返回的匿名類型,可以用var關鍵字聲明的變量接收
○ 對於一些名稱比較長的類,類實例化的時候,可以用var關鍵字聲明的變量接收

 

 

 

 


&在c語言中是什

&可以作為“按位與”或是“取地址”運算符
下面是作為兩種用法的介紹:
1. 按位與運算 按位與運算符"&"是雙目運算符。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。
例如:9&5可寫算式如下: 00001001 (9的二進制補碼)&00000101 (5的二進制補碼) 00000001 (1的二進制補碼)可見9&5=1。
按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進制數為0000000011111111)。
2.取地址
&作為一元運算符,結果是右操作對象的地址。
例如&x返回x的地址。
地址本身是一個抽象的概念,用於表示對象在存儲器中的邏輯位置
 

&在c語言中是什

&可以作為“按位與”或是“取地址”運算符
下面是作為兩種用法的介紹:
1. 按位與運算 按位與運算符"&"是雙目運算符。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。
例如:9&5可寫算式如下: 00001001 (9的二進制補碼)&00000101 (5的二進制補碼) 00000001 (1的二進制補碼)可見9&5=1。
按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進制數為0000000011111111)。
2.取地址
&作為一元運算符,結果是右操作對象的地址。
例如&x返回x的地址。
地址本身是一個抽象的概念,用於表示對象在存儲器中的邏輯位置
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved