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