![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c#学习笔记
Groyo
这个作者很懒,什么都没留下…
展开
-
二叉树的先序 中序 后序遍历 非递归
二叉树的先序 中序 后序遍历 非递归实现定义二叉树类 public class BinaryTreeNode { public char? data; public BinaryTreeNode leftChild, rightChild; }先序遍历public void PreorderTraverse(BinaryTreeNode tree){ Stack<BinaryTreeNode> stack = new Stack<BinaryTr原创 2021-10-13 11:00:21 · 732 阅读 · 0 评论 -
c#学习笔记 协变逆变
协变和逆变是用来修饰泛型字母的,只用在泛型接口和泛型委托中协变:out ○ 父类装子类 逆变:in○ 子类装父类作用:1. 委托类型 a. in 修饰的泛型字母,只能作参数 b. out 修饰的泛型字母,只能作返回值2. 委托变量 a. 由有out修饰的委托定义的两个不同类型的委托变量,互相赋值时会自动判断返回值之间是否存在继承关系。 b.由有in修饰的委托定义的两个不同类型的委托变量,互相赋值时会自动判断对应参数之间是否存在继承关系。using System;name原创 2021-04-09 20:49:58 · 202 阅读 · 0 评论 -
c#学习笔记 特殊语法
using System;namespace 特殊语法{ class Person { public string Name { get; set; } public bool Sex { get; set; } public void Speak () { Console.WriteLine ("name:" + Name + " sex:" + (Sex? "男": "女"));原创 2021-03-05 17:36:34 · 173 阅读 · 1 评论 -
c#学习笔记 闭包
内层函数可以引用包含它的外层函数的变量,即使该外层函数已经执行完毕(即该外层函数的栈帧不会释放)。注意:引用的变量的值是第一外层代码块范围内的最终值(执行完毕时的值)。如下: void func(){ for (int i = 0; i < 10; i++){ action += () => { Console.WriteLine(i); }; }}action执行结果为 十个 10; void func(){ for (int i = 0; i < 10; i++原创 2021-01-29 13:46:31 · 80 阅读 · 0 评论 -
c#学习笔记 匿名函数 Lambda Express
匿名函数和委托事件配合使用。一般作为函数参数 或者 返回值• 语法:delegate(参数列表){//函数逻辑};//结尾有分号Lambda Express• 匿名函数的简写形式• 语法:(参数列表)=> {//函数逻辑};//结尾有分号//因为是配合委托和事件使用,参数列表中的内容必须和委托类型匹配(参数类型可以不写)。//如果某个函数只有一条语句,也可用这种写法。public void Function() => Console.WriteLine();..原创 2021-01-29 13:45:25 · 160 阅读 · 0 评论 -
c#学习笔记 委托和事件
委托• 语法:访问修饰符 delegate 返回类型 委托名(参数列表)○ public delegate void MyDelegate(int a);○ MyDelegate myDelegate;• 添加 / 取消订阅 += / -=○ myDelegate += Func;//Func返回空,需要一个int参数○ 直接 myDelegate = Func,会覆盖掉前面已经订阅的函数(相当于重新赋值而不是在原来基础上添加)。• 调用:myDelegate.Invoke(intValue)原创 2021-01-29 11:59:38 · 127 阅读 · 0 评论 -
c#学习笔记 泛型 泛型约束
• 泛型是什么 ○ 泛型实现了类型参数化,达到代码重用的目的。 ○ 通过类型参数化来实现同一份代码上操作多种类型 ○ 泛型 T 相当于类型占位符 ○ 定义类或者方法时使用替代符代表变量类型 ○ 当真正使用类或者方法时才具体指定类型• 泛型的作用 ○ 不同类型对象的相同逻辑处理就可以选择泛型• 泛型的分类 ○ 泛型类和泛型接口 ○ 基本语法: § class 类名<泛型占位字母> § Interface 接口名<泛型占位字母> ○ 继承类或实现接口原创 2021-01-28 12:39:29 · 127 阅读 · 0 评论 -
c#学习笔记 数据结构 列表 栈 队列 哈希表
需要using System.CollectionArrayList :以object存储元素,即可以存储任意类型的东西。不建议使用 ArrayList 类进行新的开发。 相反,我们建议使用泛型 List 类。 ArrayList类旨在保存对象的异类集合。 但是,它并不总是提供最佳性能。 相反,我们建议执行以下操作:• 对于异类对象集合,请使用 List c # 中的 或 List(Of Object) (Visual Basic) 类型。• 对于同类对象的同类集合,请使用 List 类。基本操作原创 2021-01-28 11:52:00 · 146 阅读 · 0 评论 -
c#学习笔记 StringBuilder
原创 2021-01-23 17:49:52 · 71 阅读 · 0 评论 -
c#学习笔记 string
原创 2021-01-23 17:48:16 · 64 阅读 · 0 评论 -
c# 学习笔记 万物之父 Object
• 静态方法 ○ Equals § 签名: public static bool Equals(Object objA, Object objB); § 功能: 判断两个对象是否相等。不管两个参数是值类型还是引用类型,最后都会按照左侧对象的Equals方法来进行比较。 ○ ReferenceEquals § 签名: public static bool ReferenceEquals(Ob原创 2021-01-23 17:44:47 · 169 阅读 · 1 评论 -
c# 学习笔记 接口 framework c#版本
接口是行为的规范接口也是一种自定义类型关键字 interface接口声明的规范:1. 不包含成员变量2. 只包含方法、属性、索引器、事件3. 成员不能被实现,包括访问器get和set。C# 8.0 中开启默认接口实现4. 成员可以不用写访问修饰符,默认是public ,但不能是私有的5. 接口不能继承类,但可以继承另一个接口接口的使用规范:1. 类可以实现多个接口2. 类要使用接口就必须实现接口中的所有成员,且必须是public的接口命名规范:帕斯卡命名法,前面加个 I实例:n原创 2021-01-20 19:31:18 · 285 阅读 · 1 评论 -
c# rider [CS8701] 目标运行时不支持默认接口实现。
修改TargetFramework至net5.0即可点击红色框中的solution,选择File System2.打开xxx.csproj文件3.修改TargetFramework至net5.0原创 2021-01-20 19:17:01 · 1836 阅读 · 1 评论 -
rider 修改 c# 版本
1.在解决方案上右键->属性2.点击Language Version栏,选择需要的版本原创 2021-01-20 18:58:47 · 4919 阅读 · 0 评论 -
c#学习笔记 里氏替换原则 is和as
里氏替换原则:任何父类出现的地方都可以用子类替代。换言之,父类对象可以作为容器装载子类对象。类似Java中的上转型对象。is :判断一个对象是否为指定类的实例返回 bool 是返回真,不是返回假as :将一个对象转换为指定类的对象返回 指定类的对象 成功返回指定类的对象 失败返回nullclass Creature { protected int HP; protected int ATK; } class Hero : Creatur原创 2021-01-20 14:40:22 · 282 阅读 · 2 评论 -
c#学习笔记 操作符重载
关键字operator特点1. 一定是一个public的静态方法2. 逻辑处理自定义作用让自定义的类或结构体能够使用运算符基本语法:public static 返回类型 operator 运算符(参数列表){//do something}实例: class Point { public int x; public int y; public Point (int x, int y) { this.x = x; this.y =原创 2021-01-18 18:11:07 · 125 阅读 · 0 评论 -
c#学习笔记 拓展方法
概念为现有非静态 变量类型 添加新方法作用提升程序拓展性不需要类中重新写方法不需要继承来添加方法为别人封装的类型写额外的方法特点一定是写在静态类中一定是个静态函数第一个参数为拓展目标第一个参数用this修饰基本语法:在静态类中声明的静态方法访问修饰符 static 返回值 函数名(this 拓展类名 参数名,参数类型 参数名,。。。){//do something}namespace 拓展方法{ static class Tools {原创 2021-01-18 17:08:20 · 119 阅读 · 1 评论 -
c#学习笔记 结构体和类的区别
原创 2021-01-17 19:54:12 · 83 阅读 · 0 评论 -
c#学习笔记 结构体
public struct Student { public int age; public string sex; public string name; public int id; public Student (int age, string sex, string name, int id) { this.age = age; this.se..原创 2021-01-17 19:31:44 · 166 阅读 · 0 评论 -
c#学习笔记 params 变长参数
原创 2021-01-17 19:13:56 · 89 阅读 · 0 评论 -
c#学习笔记 ref和out
static void Swap (ref int a, ref int b) { int temp = a; a = b; b = temp; } static void Main (string[] args) { int a = 4; int b = 5; Console.WriteLine.原创 2021-01-17 19:09:27 · 114 阅读 · 0 评论 -
c#学习笔记 数组
原创 2021-01-17 19:02:20 · 78 阅读 · 0 评论 -
c#学习笔记 枚举与int和string的互转
enum E_MonsterType { Normal, Elite, Boss }static void Main (string[] args) { E_MonsterType monsterType = E_MonsterType.Elite; // 枚举转int int i = (int) monsterType; //.原创 2021-01-17 18:58:06 · 139 阅读 · 0 评论 -
c# 数据默认值
转载 2021-01-17 18:53:47 · 176 阅读 · 0 评论 -
c#学习笔记 强制转换
原创 2021-01-17 18:51:10 · 105 阅读 · 0 评论