一、基本元素
1.类的实例
使用new操作符创建类的实例
2.属性、方法、事件
事件:C#特有,java用其他实现
事件机制需要善用,非常重要
3.事件event
using System.Windows.Threading;
4.C#命名规则
变量用骆驼法
int countSalary;
方法、类用帕斯卡法
Class Person
{
void DestroyBySelf(){}
}
二、数据类型
数据类型
小内存容纳大尺寸数据会丢失精度,大内存容纳小尺寸数据会导致浪费
强类型与弱类型语言比较
***********C语言 *************
int x=100;
if(x=200)
{
printf("It is OK!"); //C语言没有bool值,x=200吧200赋给了x,也不是0,所以执行printf
}
而在C#中,if条件里的值必须是bool类型,x=200不会编译通过,只能写x==200
********JavaScript ***********
function ButtonClicked()
{
var myVar=100;
myVar="Hello,JavaScript!";
alert(myVar); //这里会弹出Hello,JavaScript,尽管它之前是int类型。
}
C#中不允许这种情况出现,但用动态dynamic来达到这种效果
********C# *********************
dynamic myVar=100;
Console.WriteLine(myVar);
myVar="Hello,C#!";
Console.WriteLine(myVar);
三、类型系统
五大数据类型
类、结构体、枚举、接口、委托
派生谱系
Object —–引用类型—–类、接口、委托
Object —–值类型—–结构体、枚举
变量、对象与内存
表面上变量是储存数据,实际上,变量表示的是储存位置,每个变量都有一个类型,来决定什么样的值可以存入变量
———————7种变量———————–
- 静态变量:属于类
- 成员变量:字段
- 数组元素:
int[] array=new int[100];
- 值参数、引用参数、输出形参:
public double Plus( double a,double b){ return a+b;}
- 参数前面加ref为引用参数,加out为输出参数
- 局部变量: 方法体里声明的变量
public double Plus( double a,double b)
{
double result=a+b;
return result;
}
—————变量声明—————–
- 值类型的变量
byte类型占1字节8位,2的8次方表示0~255
sbyte类型占1字节8位,有1位是符号,2的7次方表示-128~127 - 引用类型的变量:装的对象实例的内存地址
class Person
{
public int num;
public string str;
}
static void Main(string[] args)
{
Person xiaoming; //声明了xiaoming为变量名,内存中分配给xiaoming地址
xiaoming= new Person(); //实例化了一个Person(),分配了num,str的内存,把内存地址给xiaoming
}
局部变量在栈stack上分配内存
- 常量
const int x = 100; //不能改变,不能不初始化
装箱与拆箱
- 装箱:
从栈往堆里输送
栈上的值类型封装成object类型的实例,放在堆上;Boxing装箱说法(值类型变量转换成引用类型); - 拆箱:
从堆里往栈里输送
堆上的object类型实例的值转换成所要求类型,放在栈上; Unboxing拆箱说法(引用类型变成值类型);