❝声明变量
变量的初始化和作用域
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 编辑过