首页 > 代码库 > C#笔记
C#笔记
面向对象三特性:封装,继承,多态
var没有确定类型,类似于javascript的var
is相当于JAVA的instanceof
asEmployee e = o as Employee;
把o转换成Employee,转换不了返回空
sizeof获取值类型的字节大小sizeof(int)
typeof获取Type对象typeof(int)
命名空间别名
using m1 = myspace.dao
using m2 = myspace2.dao
m1.User
m2.User
常量和只读
public const int a;//常量,隐式静态,只能是内建值类型或枚举类型
public readonly int a;//只读,默认不是静态的,可以是任何类型
封装,相当于JAVA的getter,setter
C#中属性就是指get,set
private string name;
public string Name{
get{ return name; }
set{ name = value; }
}
构造函数
public Person()
:this("jimmy")//调用别的构造函数
{
console.write("这句不调用");
}
public Person(string name){
console.write("此句被调用");
}
析构函数(与构造函数相反,对象销毁时调用)不能有参数,不能有修饰符,只能有一个,不能被调用
~Person(){
//清理非托管资源
}
继承
public class Student : Person{}
public sealed class Student : Person{}//sealed不能再往下继承,相当于java的final,也可用于方法、成员
base相当于JAVA的super
virtual 与JAVA不同,基类必须有virtual子类才能override
class A{
public virtual void F(){
Console.writeline("virtual");
}
}
class B:A{
public override void F(){
Console.writeline("override");
}
}
class C:A{
public new void F(){
Console.writeline("new");
}
}
override:只要是B实例都会打印override
new:根据引用类型调用对应的方法,A引用打印virtual,C引用打印new
抽象
abstract 抽象方法隐式virtual,有抽象方法类必须是抽象的
abstract class A{
public abstract boolean isTrue();//抽象方法没有方法体
public void normalMethod(){//抽象类中可以有普通方法
if(isTrue()){//调用抽象方法,可用于模板模式
//xxx;
}
}
}
子类override关键字实现abstract方法
匿名类
var worker = new {name=”jimmy”,age=21};
分部类
同一个类写在不同文件中
public partial class A{//声明partial
}
partial class A{//A类的一部分
}
扩展方法
public static class PersonExtension{
public static void exist(this Person person,String name){
if(person.Name == name)
Console.WriteLine(msg);
}
}
Main(string args[]){
Person person = new Person();
person.Name = “jimmy”;
person.exist(“jimmy”);
}
接口
public interface IUser{
public string name{get;set;}//get,set只是声明,没有实现
public void insert(User user);
}
public class Student:IUser{
public void insert(User user){//可以显式指定IUser.insert(User user)
实现
}
}
抽象类继承接口,实现不了把继承自接口里的方法声明称abstract,子类再实现。可以实现直接实现
操作符重载(某些不能重载)
public static Person operator+(Person p1,Person p2){
xxxxx;
return person;
}
VS2013注册码:BWG7X-J98B3-W34RT-33B3R-JVYW9