一、笔记
1.c#中的访问修饰符
public:公开的公共的 private:私有的,只能在当前类的内部访问
protected:受保护的:只能在当前类的内部以及该类的子类中访问。 internal:只能在当前项目中访问
protected internal:
1)能够修饰类的只有public 和internal
2)可访问性不一致
子类的访问权限不能高于父类的访问权限
//值类型:int double char decimal bool enum struct
//引用类型:string 数组 自定义类 集合 object 接口 特殊:
由于字符串具有不可变性,所以和其他引用类型在复制的时候有所区别。
值类型在复制的时候传递的是这个值本身
引用类型在复制的时候传递的是对这个对象的引用(可以理解为地址)
3、设计模式
设计这个项目的一种方式,c#中一共有26种常见的设计模式
4.简单工程设计模式
序列化:就是将对象转换为二进制
反序列化:将二进制转换为对象
作用: 传输数据用法见代码
6、partial部分类
可以在同一个项目中写相同名字的类(函数),所有相同名字的类(函数)共同构成了这个类。
7.sealed 密封类
不能被其他类继承,但是可以继承其他类
二、代码
class Program
{
static void Main(string[] args)
{
//要将p.这个对象 传输给对方电脑
//Person p = new Person();
//p.Name = "张三";
//p.Age = 19;
//p.Gender = '男';
//using (FileStream fswrite = new FileStream(@"D:\Users\86176\Desktop\111.txt", FileMode.OpenOrCreate, FileAccess.Write))
//{
// //开始序列化对象
// BinaryFormatter bf = new BinaryFormatter();
// bf.Serialize(fswrite, p);
//}
//Console.WriteLine("序列化成功");
//Console.ReadKey();
//接收对方发过来的二进制 反序列化
Person p;
using (FileStream fsRead = new FileStream(@"D:\Users\86176\Desktop\111.txt", FileMode.OpenOrCreate, FileAccess.Read))
{
//开始反序列化
BinaryFormatter bf = new BinaryFormatter();
p = (Person)bf.Deserialize(fsRead);
}
Console.WriteLine(p.Name);
Console.WriteLine(p.Age);
Console.WriteLine(p.Gender);
Console.ReadKey();
}
}
[Serializable]
public class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
}
2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 简单工厂设计模式
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入你想要的笔记本品牌");
string brand = Console.ReadLine();
NoteBook nb = GetNoteBook(brand);
nb.SayHello();
Console.ReadKey();
}
/// <summary>
/// 简单工长的核心 根据用户输入创建不同对象
/// </summary>
/// <param name="brand"></param>
/// <returns></returns>
public static NoteBook GetNoteBook(string brand)
{
NoteBook nb = null;
switch(brand)
{
case "Lenovo":nb = new Lenovo();
break;
case "IBM":nb = new IBM();
break;
case "Acer":nb = new Acer();
break;
case "Dell":nb = new Dell();
break;
}
return nb;
}
}
public abstract class NoteBook
{
public abstract void SayHello();
}
public class Lenovo:NoteBook
{
public override void SayHello()
{
Console.WriteLine("我是联想笔记本");
}
}
public class Acer:NoteBook
{
public override void SayHello()
{
Console.WriteLine("我是宏基笔记本");
}
}
public class Dell:NoteBook
{
public override void SayHello()
{
Console.WriteLine("我是戴尔笔记本");
}
}
public class IBM:NoteBook
{
public override void SayHello()
{
Console.WriteLine("我是IBM笔记本");
}
}
}