C#语言知识
cai.Jh
这个作者很懒,什么都没留下…
展开
-
ADO.NET 实体数据模型----简单使用
创建:在一个Project中添加ADO.NET实体数据模型,选择空EF设计器模式,完成。添加实体:在.edmx文件中,右键新增实体,输入实体名称,设置主键,确定。创建关联:在有多个实体后,在.edmx文件中,右键新增关联,多重性为对应关系,如下图为一个学校对应多个学生。导航属性相当于外键,学校要访问Student的时候,使用Student访问。创建完成之后,右键根据模型生成数据库,选择要连接的数据库点击下一步会生成SQL语句,负责,点击完成打开数据库,新建查询,将生成的SQL语句粘贴原创 2021-10-05 08:34:59 · 1506 阅读 · 0 评论 -
类/属性,方法,事件/引用变量,实例/静态成员,非静态成员
Q1:类类是对现实事物抽象得到的结果。类为现实世界事物的模型,抽象即建模的过程。Q2:属性、方法、事件属性:类存储数据的功能,可表示当前类或对象的数据。方法:表示类或对象能做什么事件:类或对象通知其它类或者对象的机制Q3:引用变量与实例使用new操作符可以创建实例,为了使用创建的实例便有了引用变量。当把实例比作气球,引用变量表示小孩可存在的情况:单独存在气球单独存在小孩小孩通过绳子牵着气球多个小孩通过不同的绳子牵着同一个气球多个小孩通过同一绳子牵着通一个气球(REF修饰符修饰的原创 2021-08-28 23:51:00 · 185 阅读 · 0 评论 -
引用,名称空间,类,类型的根,对象哈希码,new操作,转换
Q1:引用类库的中类调用的物理基础,dll后缀名文件,为引用文件。在引用中添加相关的dll文件之后,便可以调用类库中的类和其方法,进行使用。白盒引用:dll文件project包含在solution中,可以很方便的debug出来黑盒应用:只有编译完成的dll文件,有问题只能等其修改,重新编译后才可以使用。以为类库与类库之间也有依赖关系,所以为了一次性把顶层类库和其依赖的底层类库一起引用,便有了类库包形式的引用,NUGET技术Q2:名称空间名称空间是一一种合理的方式(树的形式)组织了类和其他类型原创 2021-08-26 04:33:52 · 203 阅读 · 0 评论 -
命立模式----初理解
命立模式:将方法独立出来,进行是实例化,方便指针回调例子:输入A 输出A输入B 输出B class Program { static void Main(string[] args) { Player player = new Player(); string inputValue = null; Console.WriteLine("请输入按键"); inputValue = Conso原创 2021-04-09 22:26:47 · 159 阅读 · 0 评论 -
C#--泛型
1.为了解决代码爆炸而出现,并且减少装拆箱操作而出现,提高代码的重用1)定义算法,并不定义算法所要操作的数据类型,使用时在定义操作的数据类型2)允许在class struct interface delegate中定义泛型3)若定义了一个T,源代码使用数据类型的任何地方都可以使用T4)泛型的定义都跟在命名后面 如 class class_nume {} void function_name(){} delegate void delegate_name(T a)2.使用泛型带来的好处:1原创 2020-12-11 16:14:04 · 489 阅读 · 0 评论 -
c#--知识点整理--类中使用索引
有一个管理类XManagers,用来存储,管理,X类型的变量class XManagers<T>{ private List<T> xManagers=new List<T>(); public void Add(T arg){ this.xManagers.Add(arg); }//声明索引器,要添加一个get public T this[int index] { get return this.xManagers[index]; }}c原创 2020-09-23 14:38:34 · 198 阅读 · 0 评论 -
C# 迭代器的实现,整理
声明一个类实现IEnumerable接口class MyIEnumerable : IEnumerable { public IEnumerator GetEnumerator() { throw new NotImplementedException(); } }实现的接口是要求返回一个IEnumerator。即要实现一个迭代器,所以在这个类中实现这个迭代器class MyIEnumerable : IEnumerable {原创 2020-08-17 16:26:54 · 187 阅读 · 0 评论 -
Unity----Socket使用①
使用Socket的Demo分析:聊天室:①客户端:UI界面、网络收发I/O②服务器端:网络收发I/O:创建Socket对象->将Socket对象和电脑的应用进行一个绑定->等待连接,连接成功就建立交流的通道(1)创建Socket对象Socket tcpServer = new Socket();进行初始化的构造函数的重载有三个:只有一个参数,参数类型为SocketInformation查看SocketInformation这个东西,转到定义的地方namespace S原创 2020-07-27 19:44:59 · 342 阅读 · 0 评论 -
Linq知识整理----Where,Select
1.使用方法创建IEnumerable,IEnumerable不是数组类型,为可枚举类型public static IEnumerable<string> GenerateSequence() { var i = 0; while (i++ < 100) { yield return i.ToString(); }yield return 与 return的原创 2020-07-24 23:26:10 · 853 阅读 · 0 评论 -
使用类管理另一个类对象集合
1.关于实现IEnumrable接口的类在类进行初始化时候,可以调用实现的Add方法 class Demo :IEnumerable{ public int a; public void Add(int b) { a = b; } public IEnumerator GetEnumerator() { throw new NotImplementedException();原创 2020-07-14 16:57:18 · 247 阅读 · 0 评论 -
C#lambda与闭包的个人理解
1.lambada:任何 Lambda 表达式都可以转换为委托类型。 Lambda 表达式可以转换的委托类型由其参数和返回值的类型定义。 如果 lambda 表达式不返回值,则可以将其转换为 Action 委托类型之一;否则,可将其转换为 Func 委托类型之一。注意的是,委托并不关心类,只关心关联方法的参数和返回值类型是否一致。2.属性与lambada:当一个属性 string demoString=>“One String”;就会把return "One String"作为demoStri原创 2020-07-12 17:58:41 · 582 阅读 · 0 评论 -
多播委托的调用
委托是可以+起来组合成一个多播委托的,并且通过GetInvocationList()获得一个Delegate[] 数组,通过foreach访问其中的每一个委托,并且可以通过设置条件来确定执行那些委托,或者捕捉多播委托执行过程中的异常。Demo:一个多播委托,逆转调用顺序①声明一个类,含有三个方法class Demo { public static int Func1() { Console.WriteLine("invoke func1");原创 2020-07-10 11:11:59 · 189 阅读 · 0 评论 -
C# Partial类Demo①
关于partial类 以及partial方法来添加狗子信息①partial方法只能声明在partial类中②partial方法使用的时候可以在主题类中进行声明,声明的时候前面不能有访问性修饰符virtual abstract override new sealed或extern③当partial方法没有寻找到匹配的方法的时候不会被调用④partial类声明的一般为静态类或者私有类Demo:一个学生类,有一个Name属性,修改后打印修改的值partial class Student {原创 2020-07-09 22:52:47 · 242 阅读 · 0 评论 -
泛型Default赋值
default方法为泛型参数设置为默认值,default(T) ,参数为占位符,根据封闭的类型,进行给值,如果是值类型则是0,引用类型为null,如果是struct类型,会根据struct里面的类型,确定一个默认值。 class Demo<T> { public T data = default(T); public bool IsDefaultValue() { T temp = default(T); if原创 2020-07-08 15:10:02 · 576 阅读 · 0 评论 -
泛型约束,实现约束特定类型的List
一、泛型的约束有T:struct 封闭的类型为值类型T:class 封闭的类型为引用类型T:IInterfaceName 封闭的类型必须实现接口IInterfaceNameT:className 封闭的类型必须是className类或其子类T:new() 封闭的类型必须带有无参的构造方法T:U T的约束继承于U使用的方法where T:struct,class 封闭的类型为值类型且为引用类型,不存在会报错所以约定如果有struct 或者class 必须在所有约束前面所以str原创 2020-07-07 19:12:22 · 462 阅读 · 0 评论 -
SortedList「」的初步使用
class Program { static void Main(string[] args) { SortedList<int, string> sortedList = new SortedList<int, string>(); sortedList.Add(1, "one"); sortedList.Add(3, "three"); sortedList.Add(5原创 2020-07-06 15:18:39 · 360 阅读 · 0 评论 -
Thread的共享与不共享变量情况
一、不共享变量的线程1.方法创建变量class Program { static void Main(string[] args) { Thread thread = new Thread(go); thread.Start(); go(); } static void go() { bool done = false; if (!d原创 2020-07-03 06:05:59 · 629 阅读 · 0 评论 -
泛型与object的比较
先定义一个使用object类型数组存储内容的类public class FixedSizeCollection { public static int InstanceCount { get; set; } public int ItemCount { get; private set; } private object[] Items原创 2020-07-02 15:19:13 · 581 阅读 · 0 评论 -
委托与事件
1.委托委托的声明:该委托返回值为空,参数为int类型的方法。delegate void TestName(int a);static void Funtion1(int b){Console.WriteLine(b);}TestName=Funtion1;TestName(5);委托的实质是个类。可以声明在类里面(相当于嵌套类),可以声明在类外。使用的方式相当于C++里的方法指针,最开始是做回调函数使用。2.事件事件是基于委托存在的。一个事件的过程有:事件的拥有者,事件的响响原创 2020-06-17 22:06:41 · 191 阅读 · 0 评论 -
C#泛型知识整理
1.作用代码的复用最开始是使用object类型,但是涉及到装拆箱,导致性能变差。2.泛型类型泛型会声明类型参数–生产类型,消费者提供类型参数(argument)来把占位符类型填充上public class Stack<T>{T a;return a ;}var stack =new Stack<int>();//合成发生在运行时。编译的时候stack = new string();会报错Stack 开发类型Stack封闭类型运行时,泛型类型实例都是封原创 2020-06-15 18:03:50 · 345 阅读 · 0 评论