C#基本概念

本章内容
ü 基本数据类型
ü 操作符
ü 流程控制
ü 数组
ü 结构、枚举类型和类
ü 委托和事件
本章内容不是全面介绍C#语言,而是对C#语言进行一个总结。假定读者已经对C#语言已经了解,详细的C#资料可参看微软的.NET SDK的文档。
请读者原谅我加上这一章,之所以这样是因为我想对C#语言的一些功能点做一些总结,尽量以图表的方式展示这些功能点。我也买过很多书,java和.net的,很多书的前4、5章的内容基本相同,都是介绍开发语言的。我们读者哪有那么多银子区买这些重复的东西呢?
4.1基本数据类型
C#定义了十三种简单类型,下面的表是对这些类型做了比较。

C#关键字
框架类型
占用字节(位)
范围
sbyte
System.SByte
8
-128到127
byte
System.Byte
8
0到255
short
System.Int16
16
-32768到32767
ushort
System.UInt16
16
0到65535
int
System.Int32
32
-2147483648到2147483647
uint
System.UInt32
32
0到4294967295
long
System.Int64
64
-9223372036854775808到9223372036854775807
ulong
System.UInt64
64
0到18446744073709551615
char
System.Char
32
所有Uniccode字符
float
System.Single
32
约(±)1.5× 10 -45到 7.9×3.4×10 38
double
System.Double
64
约(±)5.0× 10 -324到 7.9×10×10 28
decimal
System.Decimal
128
8
bool
System.Boolean
1
true 或者false
我们通过一个例子来查看各个类型的最大最小值。
Console.WriteLine("SByte:MaxValue=" + SByte.MaxValue + ",MinValue=" + SByte.MinValue);
Console.WriteLine("Byte:MaxValue=" + Byte.MaxValue + ",MinValue=" + Byte.MinValue);
Console.WriteLine("Int16:MaxValue=" + Int16.MaxValue + ",MinValue=" + Int16.MinValue);
Console.WriteLine("UInt16:MaxValue=" + UInt16.MaxValue + ",MinValue=" + UInt16.MinValue);
Console.WriteLine("Int32:MaxValue=" + Int32.MaxValue + ",MinValue=" + Int32.MinValue);
Console.WriteLine("UInt32:MaxValue=" + UInt32.MaxValue + ",MinValue=" + UInt32.MinValue);
Console.WriteLine("Int64:MaxValue=" + Int64.MaxValue + ",MinValue=" + Int64.MinValue);
Console.WriteLine("UInt64:MaxValue=" + UInt64.MaxValue + ",MinValue=" + UInt64.MinValue);
Console.WriteLine("Char:MaxValue=" + Char.MaxValue + ",MinValue=" + Char.MinValue);
Console.WriteLine("Char:MaxValue=" + Char.MaxValue + ",MinValue=" + Char.MinValue;
Console.WriteLine("Single:MaxValue=" + Single.MaxValue + ",MinValue=" + Single.MinValue);
Console.WriteLine("Double:MaxValue=" + Double.MaxValue + ",MinValue=" + Double.MinValue);
Console.WriteLine("Decimal:MaxValue=" + Decimal.MaxValue + ",MinValue=" + Decimal.MinValue);
Console.WriteLine("Boolean:TruString=" + Boolean.TrueString + ",FalseString=" + Boolean.FalseString);
运行此程序,显示结果如下:
据Mono文档介绍,Char类型的最大值为65535,最小值为0。不过这里显示是乱码。这是因为这两个值的类型都是char。我们可以通过下面的代码片段将其转换成double,终端中将显示最大值65535和最小值0:
double maxValue = Convert.ToInt32(Char.MaxValue);
double maxValue = Convert.ToInt32(Char.MinValue);
Consloe.WriteLine(“Char:MaxValue=” +maxValue + “,MinValue=” + minValue);
这13种类型都是值类型,值类型和引用类型的区别在下面介绍。这里如何区分值类型和引用类型呢?
区分值类型和引用类型是相当重要的,尤其在对方法的参数进行判断的时候很容易出错。值类型都继承于System.ValueType和它的子类,如结构类型和枚举类型。
考虑下面的一个例子。
using System;
public class ValueandRef
{
public class Person
{
public string name;
public int age;
public Person()
{
}
public Person(string p1,int p2)
{
name=p1;
age=p2;
}
}
//引用类型
Person person = new Person("xuwen",32);
//值类型
int salary = 12000;
//打印person和salary的值
public void PrintInfo()
{
Console.WriteLine(person.name + "'s age:" + person.age);
Console.WriteLine(person.name + "'s salary:" + salary);
}
//更改数值,p1参数是引用类型,p2参数是值类型
public void ChangedValue(Person p1,int p2)
{
//这里p1设置为新对象,p1的地址不再指向person,而是指向了一个新的Person。
p1 = new Person();
p1.name ="yuer"; //这里对值的修改只影响新的对象的值,person的值不被修改
p1.age = 23;
p2 = 5400;//值类型,这里的修改不会影响salary
}
public void ChangedValueTwo(Person p1,int p2)
{
p1.name = "hutu"; //这里p1和person是同一对象
p1.age =27;
p2 = 7200; //值对象,这里的修改不会影响salary
}
public void Test()
{
Console.WriteLine("PrintInfo:Before the first changed");
PrintInfo();
Console.WriteLine("PrintInfo:after the first changed");
ChangedValue(person,salary);
PrintInfo();
Console.WriteLine("PrintInfo:after the second changed");
ChangedValueTwo(person,salary);
PrintInfo();
}
public static void Main(string[] args)
{
ValueandRef vandr = new ValueandRef();
vandr.Test();
}
}
编译运行这个程序,显示结果如下:
这里Person是引用类型,int是值类型。
常用转义符号:

转义符号
代表的意思
Unicode值
\’
单引号
\u0027
\”
双引号
\u0022
\\
反斜杠
\u005C
\0
null
\u0000
\a
Alert
\u0007
\b
空格
\u0008
\f
换页
\u000C
\n
新行
\u000A
\r
回车
\u000D
\t
水平tab
\u0009
\v
竖直tab
\u000B
字符串格式化规则:
String.Format和WriteLine使用相同的字符串格式化规则。指定格式的表达式为:
“{N[,M][:FormatString]}”,…,arg0………。
其中N指定要格式化的参数的整型数,从0开始编号。
M是可选的整型数,它指定包含格式化数值的区域的宽度,剩余空间由空格填充。如果M是负数,那么格式化数值被左对齐,否则右对齐。
FormatString是格式化指定符。
arg0…是指要格式化的字符串。
如:Console.WriteLine(“{0:D3}”,834);
标准格式指示符如下:

字符(不区分大小写)
意义
c
货币数值
d
十进制
e
指数
f
固定点
g
常规
n
带千分号的数字,如1,000,000
p
带百分号的数字
r
可恢复
x
十六进制
自定义格式指示符:

格式符
用途
说明
0
显示零占位符
补零
#
显示数字占位符
使用有效数字替换#
.
小数点
.
,
千分符号
如1,000,000
%
百分比表示
显示%
E+0
E-0
e+0
e-0
指数
指数格式化
\
字符字面值
显示格式字符
‘XYZ’
“XYZ”
字符串字面值
显示引号内的字符串
;
节分隔符
日期类型的格式化符:

格式字符
日期模式
说明
d
MM/dd/yyyy
短日期模式
D
dddd.MMMM dd,yyyy
长日期模式
t
HH:mm
短时间模式
T
HH:mm:ss
长时间模式
f
dddd,MMMM dd,yyyy HH:mm
完整日期/时间模式(短时间)
F
dddd,MMMM dd,yyyy HH:mm:ss
完整日期/时间模式(长时间)
g
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值