关于ref和out
string str =Console .ReadLine();
int i;//要先定义i的类型
if (int.TryParse(str, out i) == true)//int.TryParse(str, out i)这个式子的返回值是bool类型的,表示是把string类型的str尝试转化为int 类型的i
{
Console.WriteLine(i);
}
else
{
Console.WriteLine("转化错误");
}
Console.ReadKey();
解决方案中选中右击选择卸载项目,是表示把当前的项目给禁用了,下次什么时候可以随时右击选择从新启用项目
字段 field(和某个类的某个对象相关的变量)
方法method(类可以执行的动作,和函数差不多),属性可以直接赋值,方法后面必须要有参数,要有(),里面要有参数值
类的成员 menmber 字段,方法,属性(都是有访问级别的)
public
private 只能在自己的类的内部访问,外部不可以访问的
以后记得所有的字段都不要写public,可以写,只是这样子不规范的
字段开通要小些
属性开头大写 eg:Age,Name
eg:public string name; 这就是一个字段了
现在freamwork3.0 以后可以这样子简写了
public strng Name {get;set;} 简写以后这就是一个属性了(最简单最直观的判断方法了)
后面要用的时候把类实例化之后可以直接 类.Name=?;
get 读 set 写
一般是get和set,或者只有get只读,很少会用只写属性
封装成一个函数。
类的继承,这样子很多类只需要写自己独有的那些字段和方法就好了,其他的可以从父类直接来继承(父类parent(基类base),子类childclass)
类名:父类 eg:class Person:human
{
再写上自己特有的属性等
}
注意:object类是所有类的父类
eg:object obj=任何东西都不会错,只不过有木有意义的问题
创建了类以后用this比较多,它的意思表示是自己的类里面的东西
注意:new 才会产生一个对象
值类型 (int,datetime, bool ,char) 赋值的时候是传递拷贝
引用类型(普通的类型)赋值的时候是传递引用
类不占内存,对象占内存
构造函数
函数的名字和类名是一样的,没有返回值,连void都不要,其他的和函数一样
创建对象,在构造函数中队对象初始化
可以有参数,但是有参数的时候,new对象的时候把参数给传递进去
注意:很少会自己来写构造函数的
异常 可以自己抛出异常 throw new exception(异常提示),尽量不要用这个抛出异常,一般情况下不需要处理异常
try
catch(exception ex)
const常量名要大写,声明那些一定不会变的量,eg:π的值和星期等 一定不会变的量,后面再对他的赋值就会报错的,一般声明在类中的
静态成员 static,不需要new 直接来用的,eg声明一个 public static int age;可以直接类.age=20;
这样子的话public int age;(非静态成员)就不可以类.age=20;必须先要 类 对象=new 类();对象.age=20;
静态成员中的对象不可以调用非静态成员中的对象
非static成员中可以调用static成员中的对象,当然也可以调用非static成员的变量
静态类是不可以被实例化的,就是不能被new eg:static class Person,不可以实例化的
静态类用来实现一些函数库 ***Helper sqlHelper等
关于命名空间namespace
防止namespace命名重复 可以在解决方案下面建立一个文件夹,把建立的类的。cs文件放进去
转到定义 查看类的定义
右击 解析 选择命名空间(using)
还可以转到定义来查看命名空间
c#中定义了索引器的方式
string this[int index]
{
get
{
retuen "";
}
set
{
}
}
面向对象就是不断的写函数写类,然后调用函数调用类的一个过程
.net Reflector反编译器
就是查看一个生成的exe可执行文件的代码和类等