首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

C# 3.0 var 隱含型別區域變數完整解析

     編輯:ASP.NET 基礎

引言:ReSharper 提示「Use implicitly typed local variable declaration」

安裝 VS2008 後,ReSharper 建議將區域變數宣告改為 var。這是 C# 3.0 (.NET 3.5) 引入的語法糖,編譯器根據初始化運算式推斷型別,並非動態型別,生成的 IL 與顯式宣告完全相同。

基本用法

var i = 10;              // int
var s = "hello";         // string
var arr = new[] {1,2,3}; // int[]
var anon = new { Name = "Tom", Age = 25 }; // 匿名型別
var dict = new Dictionary();  // 明確建構型別

與 JavaScript var 的異同

特性C# varJavaScript var
型別推斷編譯期靜態執行期動態
可變性不可變(強型別)可隨時改型別
作用域區域變數、for/foreach/using函數/全域
必須初始化是否

限制與錯誤示範

// 錯誤 1:未初始化
var x; x = 10; // CS0815: Implicitly typed locals must be initialized

// 錯誤 2:指派 null
var y = null; // CS0815: Cannot assign  to implicitly-typed local

// 錯誤 3:欄位/屬性使用
class C { var z = 1; } // CS0825: var may only appear within a local variable declaration

// 錯誤 4:自我參考初始化
var self = self; // CS0820: Cannot use variable before assignment

型別安全驗證

var n = 10;
n = "abc"; // CS0029: Cannot implicitly convert type 'string' to 'int'

編譯期即攔截,確保強型別安全。

適用場景與最佳實務

  • 匿名型別:LINQ 查詢投影 select new { c.Name, c.Age } 必須用 var。
  • 泛型建構冗長:var dict = new Dictionary>(); 簡潔易讀。
  • LINQ 查詢變數:var q = from c in ctx.Customers where c.City=="Taipei" select c; 型別為 IQueryable<Customer>。
  • foreach 迴圈變數:foreach (var item in list)。
  • 簡單型別:int i = 0; 比 var i = 0; 更明確,團隊可自訂風格規範。

總結

var 是編譯期語法糖,不影響執行效能、不改變強型別本質。善用於匿名型別、複雜泛型、LINQ 變數可提升可讀性;簡單內建型別建議顯式宣告以利程式碼審閱。團隊應在編碼規範中明確定義使用邊界。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved