?聲明變量
變量的初始化和作用域
C#的預定義數據類型
C#程序中使用循環和條件語句執行流
枚舉
命名空間
Main()
基本的命名行C#編譯器選項
使用System.Console執行控制臺I/O
在C#和Visual Studio.NET 中使用文檔編制功能
C#標識符和關鍵字
C#編程的推薦規則和約定
引言
C# 是一種面向對象的語言
第一個程序
代碼
using System;
namespace Wrox.ProCSharp.Basics
{
class MyFirstCSharpClass
{
static void Main()
{
Console.WriteLine("This isn't at all like Java!");
Console.ReadLine();
return;
}
}
}
變量
變量定義語法
在C#中聲明變量使用下述語法:
datatype identifier;
比如:int i;
變量的初始化
C#中有兩個方法可確保變量在使用前進行初始化:
①變量是類或結構中的字段,如果沒有顯式初始化,在默認狀態下創建這些變量時,其值就是0。
②方法的局部變量必須在代碼中顯式初始化,才能在語句中使用其值。此時,初始化不是在聲明該變量時進行的,但編譯器會通過方法檢查所有可能的路徑,如果檢測到局部變量在初始化之前就使用其值,就會報錯。
注意:在C#中實例化一個引用對象需要使用new關鍵字。創建一個引用,使用new 關鍵字把該引用指向存儲在堆上的一個對象:
objSomething=new Something();
變量的作用域
概要:
變量的作用域是可以訪問該變量的代碼區域。
變量作用域規則
①只要字段所屬的類在某個作用域內,其字段(也稱為成員變量)也在該作用域內(在C++、Java和VB中也是這樣)。
②局部變量存在于表示聲明該變量的塊語句或方法結束時的封閉花括號之前的作用域內。
③在for、while或類似語句中聲明的局部變量存在于該循環體內(C++程序員注意,這域C++的ANSI標準相同。Microsoft C++編譯器早期版本不遵守該標準,但在循環停止后這種變量仍然存在)。
局部變量的作用域沖突
大型程序在不同部分為不同的變量使用相同的變量名是很常見的。變量的作用域是程序的不同部分,但要注意,同名的局部變量不能再通一作用域內聲明兩次。所以下面代碼不能夠使用。
int x=20;
int x=30;
變量i對于循環來說是局部變量!
using System;
namespace Wrox.ProSharp.Basics
{
public class ScopeTest
{
public static int Main()
{
for(int i=0;i<10;i++)
{
Console.WriteLine(i);
}//i goes out of scope here
// we can declare a variable named i again,because
//there's no other variable with that name in scope
for(int i=9;i>=0;i--)
{
Console.WriteLine(i);
}//i goes out of scope here
return 0;
}
}
}
public static int Main()
{
int j=20;
for(int i=0;i<10;i++)
{
int j=30;//can't do this -j is still in scope
Console.WriteLine(j+i);
}
return 0;
}
編譯報錯:
變量j是在for 循環開始前定義,在執行for循環時應處于其作用域內,在Main方法結束執行后,變量j才超出作用域,第二個j(不合法)則在循環的作用內,該作用域嵌套在Main方法的作用域內。編譯器無法區別這兩個變量,所以不允許聲明第二個變量。這也是與C++不同的的地方,在C++中,允許隱藏變量。
字段和局部變量的作用域沖突
在某些情況下,可以區分名稱相同(盡管其完全限定的名稱不同)、作用域相同的兩個標識符。此時編譯器允許聲明第二個變量。原因是C#在變量之間有一個基本的區分,它把聲明為類型級的變量看作是字段,而把在方法中聲明的變量看作局部變量。
using System;
namespace Wrox.ProCSharp.Basics
{
class ScopeTest2
{
static int j=20;
public static void Main()
{
int j=30;
Console.WriteLine(j);
return;
}
}
}
在Main方法中聲明的新變量j隱藏同名的類級變量,所以在運行這段代碼時,會顯示數字30。
如果要引用類級變量,怎么辦?可以使用語法object.filedname,在對象的外部引用類的字段或結構。
using System;
namespace Wrox.ProCSharp.Basics
{
class ScopeTest2
{
static int j=20;
public static void Main()
{
int j=30;
Console.WriteLine(ScopeTest2.j);
return;
}
}
}
如果要訪問一個實例字段(該字典屬于類的一個特定實例)需要使用this關鍵字。this的作用與C++和Java中的this相同,與VB中的Me相同。
常量
在聲明和初始化變量時,在變量的前面加上關鍵字const,可以把該變量指定為一個常量。常量是其值在使用過程中不會發生變化的變量。
在C++中,變量不僅可以聲明為常量,根據聲明,可以有常量指針,指向常量的變量指針、常量方法(不改變包含對象的內容),方法的常量參數等。這些細微特性,在C#中都刪除,只能把局部變量和字段聲明為常量。
常量的特征
①常量必須在聲明時初始化。指定其值,便不再修改。
②常量的值必須能在編譯時用于計算。不能用從一個變量中提取的值來初始化常量,否則需要使用只讀字段。
③常量必須在聲明時初始化。指定其值,便不再修改。
常量優點
①常量易用于理解的青春名稱替代含義不明確的數組或字符串,便于程序更易閱讀。
②常量使程序更易于修改。
③常量更容易避免程序出現錯誤。
該文章在 2024/12/30 12:39:32 編輯過