第3章.变量和表达式


问题:

C#的基本用法
变量及其用法
表达式及其用法

---------------------------------------

高效率学习 C# ----------------------->计算机程序做处理数据的操作----------->如何存储数据和处理数据的方法。

3.1 C#的基本语法

*、忽略空白字符【空格、回车符、tab字符】。
*、C#代码每个语句用分号“;”结束。
*、C#是块结构的语言
{
 C#代码1;
 C#代码2;
 C#代码3;
}//注意花括号不需要附带分号。

*、C#注释有3种:
<1> 如://注释内容。
<2> 如:/*注释内容*/ 。
<3>如:///注释内存。

*、C#区分大小写。

************C#控制台应用程序的基本结构****************

#region
#endregion 用来定义扩展和收缩的代码区域的开头和结尾。

注意:以#开头的任意关键字实际上是一个预处理命令,严格来说不是C#关键字。
----------------------------------------------------------------------

3.2变量


变量的不同内涵,称为类型。(相当于装不同东西的盒子)

声明变量:
 类型 变量名;
 <type> <name>;


变量的类型无限多,因为可以自己定义类型。

 


3.2.1 简单类型

简单类型:组成应用程序中基本组成部件的类型。

*、大多数简单类型用来存储数值。
1、数值类型
(1)整数

类型  别名  允许的值
sby  System.SByte -128~127整数
byte  System.Byte 0~255整数
short  System.Int16 -32768~32767整数
ushort  System.Int16 0~65535整数
int  System.Int32 -2147783648~2147483647整数
uint  System.UInt32 0~4294967295整数
long  System.Int64 -9223372036854775808~9223372036854775807整数
ulong  System.UInt64 0~18446744073709551615整数

(2)浮点数

类型  别名  近似最小值 近似最大值
float  System.Single 1.5x10[-45] 3.4x10[38]
double  System.Double 5.0x10[-324] 1.7x10[308]
decimal  System.Decimal 1.0x10[-28] 7.9x10[28]

2、非数值类型

类型  别名  允许的值
char  System.Char 一个Unicode字符, 0~65535整数
bool  System.Boolean 布尔值:true或false
string  System.String 一组字符

 

转义字符:反斜杠 / 加上字符组合。如:/n

3.2.2 变量的命名

(1)、变量命名规则如下:
a、变量名的第一个字符必须是字母、下划线“_”、或@。
b、其后的字符可以使字母、下划线或数字。
c、不能用C#的关键字命名。

注意:C#区分大小写。

(2)、命名约定

流行命名法:Hungarian记号法,在所有的变量名前加上一个小写的前缀,表示类型。如变量Age是int,命名为:iAge。

*可以用2个字母的前缀表示变量的类型。

现在的命名:最后根据变量的作用来命名它们。

.NET Framework 2种命名约定,称为:PascallCase 和 camelCase 。名称中的大小写表示他们的用途。
[1]、PascallCase:它们由多个单词组成,每个单词除第1个字母大写外,其他的字母都是小写。
[2]、camelCase:第1个单词小写,第2个单词的第1个字母大写,其他的小写。

建议简单的变量使用camelCase命名,高级的命名规则使用PascallCase 命名。

--------------------------------

3.2.3 字面值

在程序中被当作字面值常量:字面值是因为仅能用它的值称呼它,常量是因为它的值不能修改。每个字面值都有相应的类型,例如:0是int型,3.14159是double型。字面值仅存在于内置类型,没有类类型的字面值。因此,也没有任何标准库类型的字面值。

int i = 0;
0就是字面值。0这个字面值的类型是int类型。

*、引入字面值的概念:int a=4; string str="ab"; 有些场合下要把4,"ab"等等一起拿来说, 用什么名称来代表这些个东西呢,本没有名字,只好给它个名字,叫做 "字面值"。
有内置类型存在字面值。类类型不存在字面值。

 类型  类别 后缀    示例/允许的值
 bool  布尔 无    true或false
int,uint,long,ulong 整数 无    100
uint,ulong  整数 u或U    100U
long,ulong  整数 l或L    100L
ulong   整数 ul,uL,Ul,UL,lu,lU,Lu,或LU 100UL
float   实数 f或F    1.5F
double   实数 无或d或D   1.5
decimal   实数 m或M    1.5M
char   字符 无    'a',或转义序列
string   字符串 无    "a....a",可以包含转义字符序列

字符串的字面值

转义序列 产生的字符  字符的Unicode值
/'  单引号   0x0027
/"  双引号   0x00022
//  反斜杠   0x0005C
/0  空   0x00000
/a  警告(产生蜂鸣)  0x00007
/b  退格   0x00008
/f  换页   0x0000C
/n  换行   0x0000A
/r  回车   0x0000D
/t  水平制表符  0x00009
/v  垂直制表符  0x0000B

例子:
/'s  和 /u0027 相等。

双引号字符的转义: @"

C://Inetpub//wwwroot//a.txt

@C:/Inetpub/wwwroot/a.txt
相等。

注意:字符串是引用类型,字符串可以指定null,意思:字符串变量不引用字符串。

--------------------------------
3.2.4 变量的声明和赋值

注意:
变量在使用之前,必须初始化。


a.变量声明方法1(同时声明多个类型相同的变量):int i,j;

b.变量声明方法2(声明变量的同时为它们赋值):
int i = 2; 或 int i = 4,j=5;
int i,j=5;  注意:i使用之前必须初始化。


-----------------------------
3.3 表达式

表达式:把变量和字面值与运算符组合起来就可以创建表达式。(变量和字面值在使用运算符时,它们都是操作数)

a.运算符分类:数学运算符、赋值运算符、逻辑运算符。
b.运算符按处理操作数分类:
一元运算符,处理一个操作数;
二元运算符,处理两个操作数;
三元运算符,处理三个操作数;

------------------------
3.3.1 数学运算符

运算符  类别 表达式  结果
+  二元 c=a+b;  c的值是a和b相加的和  或 c的值是存储在a和b中的字符串的连接值(用于字符串类型变量有意义)
-  二元 c=a-b;  c的值是a和b相减的差
*  二元 c=a*b;  c的值是a和b相乘积
/  二元 c=a/b;  c的值是a和b相除的商
%  二元 c=a%b;  c的值是a和b相除的余数
+  一元 c= +a;  c的值是a的值,相当于正号
-  一元 c= -b;  c的值是b乘以-1,相当于负号
++  一元 c=++a  c的值是a+1,a递增1
--  一元 c=--b  c的值是b-1,b递减1
++  一元 c=a++  c的值是a,  a递增a+1
--  一元 c=b--  c的值是b,  b递减1


注意:
a.布尔值不能进行算数运算
b.char相加出现隐式转换,实际是数字相加。

------------------------
3.3.2 赋值运算符

运算符 类别 表达式 结果
 = 二元 c=a c被赋予a的值 (用于字符串类型变量有意义与二元+运算符一样)
 += 二元 c+=a c被赋予c加a的和
 -= 二元 c-=a c被赋予c减a的差
 *= 二元 c*=a c被赋予c乘a的积
 /= 二元 c/=a c被赋予c除以a的商
 %= 二元 c%=a c被赋予c除以a的余数

------------------------
3.3.3 运算符的优先级

优先级 运算符
高 ++(用作前缀),--(用作前缀),+(一元),-(一元),
 *,/,%
到 +(二元),-(二元)
 =,*=,/=,%=,+=,-=
低 ++(用作后缀),--(用作后缀)

注意:括号可用于忽略优先级的顺序。

------------------------
3.3.4 命名空间

命名空间:是.net中提供应用程序代码容器的方式,这样唯一的标识代码及其内容。也用作.NET Framework中给项分类的一种方式。


* 默认情况下,C#代码包含在全局命名空间中。

(a). 命名空间的定义

 namespace One
 {
  //在One命名空间的代码
 }
 //全局命名空间的代码

(b).命名空间中名称的引用
 namespace One
 {
  //在One命名空间的代码,这里面的代码可以直接引用 NameOne 名称
  // name "NameOne" 定义 NameOne名称
 }
 //全局命名空间的代码,这里面的代码必须使用 One.NameOne 来引用这个 NameOne 名称。

(c). 命名空间的嵌套(可以使用关键字namespace定义嵌套的命名空间)

 namespace One
 {
 //在One命名空间中代码,要引用名称NameTwo,必须引用为:Two.NameTwo
 
  namespace Two
  {
   //在Two命名空间的代码,要引用名称NameTwo,直接引用该 NameTwo 名称
   //name "NameTwo" 定义NameTwo名称
  }
 }
 //全局命名空间的代码,要引用名称NameTwo,必须引用为:One.Two.NameTwo

(d). 名称的唯一性
 名称是命名空间唯一定义的。

 namespace One
 {
 // name "NameThree",One 中的名称 NameThree 定义
  namespace Two
  {
   // name "NameThree",Two 中的名称 NameThree定义
  }
 }
 //全局命名空间的代码,One命名空间定义了2个不同的名称NameThree,要引用不同的名称 NameThree ,引用分别为:One.NameThree 和 Two.NameThree

(e).  using 访问名称。
using语句含义:我们需要这个命名空间中的名称,所以不要每次总是要求对他们分类。
using语句可以应用到包含他们的命名空间,以及该命名空间中包含的嵌套命名空间中。

 namespace One
 {
 // One 命名空间代码访问命名空间Two中的名称 "NameThree" ,使用using Two,One语句,代码可以使用 Two 引用Two.NameTwo
  using Two
 
  namespace Two
  {
   // name "NameThree",Two 中的名称 NameThree定义
  }
 }
 //全局命名空间的代码


注意:不同命名空间中的相同名称会产生冲突,可以为命名空间提供一个别名,作为using语句的一部分。

 namespace One
 {
 // 为命名空间提供一个别名 TW
  using TW = Two

  //name "NameThree" 命名空间One 中的名称NameThree定义
  
  namespace Two
  {
   // name "NameThree",命名空间Two 中的名称 NameThree定义
  }
 }
 //全局命名空间的代码
 
命名空间One 把 One.NameThree 引用为:NameThree 。
命名空间Two 把 Two.NameThree 引用为:TW.NameThree 。
注意:
<1> using语句本身不能访问另一个命名空间中的名称。(One里面又有另一个空间Two,所以不能做<2>步)
<2> 全局命名空间的代码不能以这种引用 TW.NameThree ,引用 Two.NameThree该空间的名称。


要想使用using语句声明如下:

 using TW = One.Two
 namespace One
 {
  //name "NameThree" 命名空间One 中的名称NameThree定义
  
  namespace Two
  {
   // name "NameThree",命名空间Two 中的名称 NameThree定义
  }
 }
 //全局命名空间的代码

这样全局命名空间的代码就可以按这种引用 TW.NameThree ,来引用 Two.NameThree该空间的名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值