2 c#基础

2.1 第一个c#程序

 1 using System;//引用命名空间,以便使用此命名空间下的类、方法等
 2  using System.Collections.Generic;
 3  using System.Linq;
 4  using System.Text;
 5 
 6  //=========== 在c#中有两种常用注释方式============
 7 
 8  //=========== 行注释的格式: //注释内容===========
 9 
10  //=========== 块注释的格式:/*注释内容*/ =========
11  
12 
13  namespace Study
14 {
15     /*
16      * C# 中每个语句都以分号结尾,语句可以写在多行,而不需要用续行符
17      * 用花括号将语名组合成块
18      * 区分大小写
19      */
20     class HelloCs //声明一个类 
21      {
22         static void Main(string[] args)  //主方法,程序入口点
23          {
24            
25             Console.WriteLine("Hello ,my name is mozer,i am a C# beginner");
26             Console.ReadLine();
27             return;
28         }
29     }
30 }
31  

 

2 .2 变量

  2.2.1 声明变量:
 datetype identifier;  例如 int i; 还可以在一行中声明多个类型相同的变量,int x,y,z;

2.2 .2变量初始化

 要使用变量,就必须在使用前初始化变量。C#有两种方法可以保证 变量在使用进行了初始化:

 (1)变量如果是结构或类中的字段,如没有显式初始化变量,默认值为0

   (2)方法的局部变量必须在代码中显式初始化,之后才能在代码中引用它。

static void Main(string[] args) 

        {

            int i;

            Console.WriteLine(i); // Error

            Console.ReadLine(); 

            int num=new int() ;
            Console.WriteLine(num);//work well
            Console.ReadLine();
            return;

        }

2.3 类型推断

 var num=1234;

 var str="mozer"

 var marrayed=false;

 

 Type numtype=num.GetType(); //System.Int32

 Tyep str=str.GetType(); // System.String

 Type marrayed=marrayed.GetType(); //System.bool

 

类型推断中,变量必须初始化,声明了变量,推断出了类型后就不能再改变变量的类型了。

 

2.3 变量的作用域

变量的作用域就可以在代码中访问该变量的区域。一般情况下

(1)如果某个类在某个作用域内,其字段(成员变量)也在该作用域内

(2)局部变量存在于 声明 该变量的块语句或 方法 结束的花括号之前的作用域内。

(3)在for 、while或类似语句中声明的变量存在于该循环体内的作用域。

2.3.1 字段与 局部变量的作用域冲突

在某些情况下,可以区分名称相同,作用相同的两个变量

代码
 1 using System;
 2  using System.Collections.Generic;
 3  using System.Linq;
 4  using System.Text;
 5 
 6 
 7 
 8  namespace Study
 9 {
10   
11     class HelloCs 
12     {
13         int j = 1;//这个j是声明在类中,是类的成员变量,也叫字段
14          static void Main(string[] args)  
15         {
16             HelloCs cs = new HelloCs();
17             int j = 2;//这个j是方法中的局部变量,它隐藏了同名的类级变量,所以代码运行时会先显示为 2 
18              Console.WriteLine(j);
19             Console.WriteLine(cs.j); //可以这样引用类级的变量
20              Console.ReadLine();
21             return;
22         }
23     }
24 }
25  

 

 2.4 常量

常量 就是其值在使用过程 不会发生变化的变量。声明示例 const float pi=3.1415936;

常量具有如下特征(1)常量必须在声明时就初始化其值,而且不能再修改

        (2)其值在编译时必须能用于计算,因此,不能从一个变量中提取值来初始化常量。如果需要这么做,应使用只读字段。

        (3) 常量总是静态的,但不必在声明中包含static关键字。

使用常量的好处(1)常量易于理解的标识符替代了含义不明的数字或字符串,使用程序易于阅读

         (2)使用程序易于修改

       (3)避免程序出现错误

2.5 预定义类型

2.5.1值类型和引用类型

C#把数据类型分为两种:值类型 和 引用类型

基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量 时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。

所有的值类型均隐式派生自 System.ValueType

与引用类型不同,可以从值类型派生出新的类型。但与引用类型相同的是,结构 也可以实现接口。

与引用类型不同,值类型无法包含 null 值。然而,可 译为 null 的类型功能确实允许将 null 赋给值类型。

每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值

2.5.2 CTS类型

C#认可的基本预定义类型并没有内置于C#中,而是内置于.net Framework中。例如在c#中声明一个int类型的数据时,声明 的实际上是.net结构System.Int32的一个实例。

2.5.3 预定义值类型(例如整型、浮点类型、字符型、布尔型)

 (1)整型

 

下表显示了整型的大小和范围,这些类型构成了简单类型的一个子集。

类型

范围

大小

sbyte

-128 到 127

有符号 8 位整数

byte

0 到 255

无符号 8 位整数

char

U+0000 到 U+ffff

16 位 Unicode 字符

short

-32,768 到 32,767

有符号 16 位整数

ushort

0 到 65,535

无符号 16 位整数

int

-2,147,483,648 到 2,147,483,647

有符号 32 位整数

uint

0 到 4,294,967,295

无符号 32 位整数

long

-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

有符号 64 位整数

ulong

0 到 18,446,744,073,709,551,615

无符号 64 位整数

如 果整数表示的值超出了 ulong 的范围,将产生编译错误。

2.5.4 浮点型

 

下表显示了浮点型的精度和大致范围。

类型

大 致范围

精度

float

±1.5e−45 到 ±3.4e38

7 位

double

±5.0e−324 到 ±1.7e308

15 到 16 位

 

 

2.5.5 decimal 类型

 

decimal 关键字表示 128 位数据类型。同浮点型相比,decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。decimal 类型的大致范围和精度如下表所示。

类型

大 致范围

精度

.NET Framework 类型

decimal

±1.0 × 10-28 到 ±7.9 × 1028

28 到 29 位有效位

System.Decimal

 

如果希望实数被视为 decimal 类型,请使用后缀 m 或 M,例如:


decimal myMoney = 300.5m;

如果 没有后缀 m,数字将被视为 double 类型,从而导致编译器错误。

整型被隐式转换为 decimal, 其计算结果为 decimal。 因此,可以用整数初始化十进制变量而不使用后缀,如下所示:

 

decimal myMoney = 300;

在浮点型和 decimal
类型之间不存在隐式转换;因此,必须使用强制转换在这两种类型之间进行转换。例如:
decimal myMoney = 99.9m;
double x = (double)myMoney;
myMoney = (decimal)x;
还可以在同一表达式中混合使用 decimal 和数值整型。但是,不进行强制转换就混合使用 decimal和浮点型将导致编译错误。

2.5.6 bool型
bool关键字是 System.Boolean 的别名。它用于声明变量来存储布尔值 truefalse
2.5.6 字符型
为保存单个字符的值,C#支持字符型

char
关键字用于声明下表所示范围内的 Unicode 字符。Unicode 字符是 16 位字符,用于表示世界上大多数已知的书面语言。

类型

范围

大小

.NET Framework 类型

char

U+0000 到 U+ffff

16 位 Unicode 字符

System.Char

char 可以隐式转换为 ushortintuintlongulongfloatdoubledecimal。但是,不存在从其他类型到 char 类型的隐式转换。

System.Char 类型提供几个处理 char 值的静态方法。

2.6 预定义的引用类型

引用类型的变量又称为对象,可存储对实际数据的引用。

C#支持两处内置预定义类型:object和string

2.6.1 objedt类型
object 类型在 .NET Framework 中是 Object 的别名。在 C# 的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)
都是直接或间接从 Object 继承的。可以将任何类型的值赋给 object 类型的变量。将值类型的变量转换为对象的过程称为“装箱”。将对象类型的变量转换为值类型的过程称为“取消装箱”。
 

 

 

 2.6.2 string 类型

 

string 类型表示零或更多 Unicode 字符组成的序列。string 是 .NET Framework 中 String 的别名。

尽管 string 是引用类型,但定义相等运算符(==!=)是 为了比较 string 对象(而不是引用)的值。这使得对字符串相等性的测试更为直观 

 

 

 

 

 

 

 

posted @ 2010-05-21 11:30  mozer  阅读(196)  评论(0编辑  收藏  举报