C# 常识
风格
方法 封装 属性 大写开头
局部变量 小写
参数 小写
私有成员 小写
1.c#基本类型
1.1值类型
- bool, System.Boolean 类型
- sbyte, System.SByte 类型
- byte, System.Byte 类型
- short, System.Int16 类型
- ushort, System.UInt16 类型
- int, System.Int32 类型
- uint, System.UInt32 类型
- long, System.Int64
- ulong, System.UInt64
- float, System.Singe 类型
- double, System.Double 类型
- decimal, System.Decimal
- char, System.Char
- enum, System.Enum 类型,一种由一组称为枚举数列表的命名常量组成的独特类型。
- struct 类型,通常用来封装小型相关变量组,例如:矩形的坐标或库存商品的特征。
1.2 引用类型
- 引用类型的变量存储对实际数据的引用。
- 申明引用类型关键字:class、interface、delegate。
- 内置引用类型:dynamyic、object、string。
2. Struct初识
在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。结构体是用来代表一个记录。
struct Student
{
public string Name;
public int Age;
public Student(string name,int age)
{
this.Name = name;
this.Age = age;
}
}
class a
{
static void Main(string[] args)
{
Student s = new Student("Jack",18);
Console.WriteLine(s.Name);
Console.WriteLine(s.Age);
//Jack
//18
}
}
2.1 特点
以上已经使用了一个Student的结构,c#中结构有以下特点:
- 结构可带有方法、字段、索引、属性、运算符方法和事件。
- 结构可定义构造函数,但不能定义析构函数。但是不能为结构定义无参构造函数。无参构造函数(默认)是自动定义的,且不能被改变。
- 与类不同,结构不能继承其他的结构或类。
- 结构不能作为其他结构或类的基础结构。
- 结构可实现一个或多个接口。
- 结构成员不能指定为 abstract、virtual 或 protected。
- 当使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。
- 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。
2.2 struct和class的区别
- 类是引用类型,struct是值类型
- 在托管堆上创建类的实例,在栈上创建struct实例
- 类实例的赋值,赋的是引用地址,struct实例的赋值,赋的是值
- 类作为参数类型传递,传递的是引用地址,struct作为参数类型传递,传递的是值
- 类没有默认无参构造函数,struct有默认无参构造函数
- 类支持继承,struct不支持继承
- 类偏向于"面向对象",用于复杂、大型数据,struct偏向于"简单值",比如小于16字节,结构简单
3. Class
3.1 终结器
终结器
是其一个比较特殊的成员函数,当类的对象超出范围时执行。
终结器
的名称是在类的名称前加上一个波浪形(~
)作为前缀,它不返回值,也不带任何参数。
终结器
用于在结束程序(比如关闭文件、释放内存等)之前释放资源。析构函数
不能继承或重载。
using System;
namespace LineApplication
{
class Line
{
private double Length; // 线条的长度
public Line() // 构造函数
{
Console.WriteLine("对象已创建");
}
~Line() //析构函数
{
Console.WriteLine("对象已删除");
}
public void setLength( double len )
{
Length = len;
}
public double getLength()
{
return Length;
}
static void Main(string[] args)
{
Line line = new Line();
// 设置线条长度
line.setLength(6.0);
Console.WriteLine("线条的长度: {0}", line.getLength());
}
}
}
3.2 继承
当创建一个类时,不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这个已有的类被称为的基类,这个新的类被称为派生类。
class Shape
{
protected int Width;
protected int Height;
public void setWidth(int w)
{
Width = w;
}
public void setHeight(int h)
{
Height = h;
}
}
// 派生类
class Rectangle: Shape
{
public int getArea()
{
return (Width * Height);
}
}