示例:
DateTime dd1,dd2;
dd1 = new DateTime(2006,3,8);
dd2 = new DateTime(1999,5,10);
int dday = (dd1-dd2).Days;
Console.WriteLine(ddays);
类是面向对象编程的基本单元
一般类包含两种成员:字段与方法
**字段即变量,方法即函数**
[pubic | private] class 类名
{
[pubic | private] 数据类型 变量名;
[pubic | private] 数据类型 函数名(参数列表)
{
}
}
返回值类型 方法名(参数列表)
{
语句1;
语句2;
//。。。
return 表达式;
}
int Add(int x, int y)
{
return x + y;
}
void f() //不返回任何值得函数
{
语句1;
语句2;
//。。。
return; // 在return后写一个空语句
}
访问一个方法的最基本方式是通过类创建的对象
以下代码在类中定义了一个Add方法
public class MathOPt
{
pubic int Add( int x, int y)
{
return x + y;
}
}
则可以通过使用new关键字创建类的对象来访问此Add方法
class Programe
{
static void Main(string[] args)
{
//创建MathOpt 类的对象
MathOPt obj = new MathOPt();
//通过对象调用类的方法,结果保存在局部变量中
int result = obj.Add(100, 200);
//....
}
}
方法重载
class MathOPt
{
//整数相加
pubic int Add(int x, int y)
{
return x + y;
}
//浮点数相加
pubic double Add(double x, double y)
{
return x + y;
}
}
MathOPt mathobj = null; //定义MathOpt对象变量
mathobj = new MathOPt(); //创建对象
int IResult = mathobj.Add(100, 200); //调用类的整数相加方法
double FResult = mathobj.Add(5.5, 9.2); //调用类的浮点数相加方法
Console.WriteLine("100+200=" + IResult); //输出结果
Console.WriteLine("5.5+9.2=" + FResult); //输出结果
构成重载关系的函数必须满足一下条件:
1)函数名相同
2)参数类型不同,或参数个数不同
c#是一个区分大小写的语言
类的静态成员和实例成员
在面向对象的程序中,有以下访问规则:
位于同一类中的实例方法可直接相互调用
类的字段(包括实例字段和静态字段)可以被同一类中的所有实例方法直接访问
类中的静态方法只能直接访问静态字段
(在静态方法中直接调用类的实例方法是非法的,可以创建对象,通过对象来访问)
属性Property
在设计类时使用属性,可以保证只有合法的数据可以传给对象
枚举:
[pubic] enum QQstate(枚举名)
{
Online(值1,)
offline(值2,)
Qme(值3)
}
pubic :访问修饰符 公开
enum : 关键字 声明枚举的关键字
枚举名: 要符合pascal命名规范
将枚举申明到命名空间下,类的外面(不能申明在main函数中) 所有的类都可以使用这个枚举
枚举就是一个变量类型 int-double string decimal
只是枚举声明、赋值、使用的方式和那些普通的变量类型不一样
枚举和int是兼容的
将枚举强转int类型:
QQstate state = QQstate.Online;
int n = (int)state;
console.writeline(n);
console.writeline((int)QQstate.offline);
console.readkey();
int强转为枚举
int n1 = 3;
QQstate state = (QQstate)n1;
console.writeline(state);
console.readkey();
所有类型都能转换成string类型,调用ToString()
结构
可以帮助我们一次声明多个不同类型的变量
语法:
[pubic] struct 结构名
{
成员://字段
}
变量在程序运行期间只能存储一个值,而字段可以存储多个值。
数组
一次性存储多个相同类型的变量
语法:
数组类型[] 数组名=new 数组类型[数组长度];