自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 SQL基础知识笔记

sql基础知识

2022-11-11 21:33:09 512 1

原创 Unity学习(C#)——进程和线程(异步委托、线程开启、结束测试、后台和前台线程、线程池、死锁

一.相关概念1.一个进程可以有多个线程(进程看成一个工厂,线程看成工人)2.一个线程里面语句的执行,是从上到下的,前一个未完成,不能执行下一个,会影响效率。所以可以用多线程来解决这个问题。3.一般我们会为比较耗时的操作开启新线程,比如下载二.线程开启方式一——异步委托 class Program { static void Test() { Console.WriteLine("test"); }

2020-07-09 16:10:52 1623

原创 Unity学习(C#)——匿名方法(lambda)

1.匿名方法匿名方法本质上是一个方法,只是没有名字,任何使用委托变量的地方都可以使用匿名方法赋值 Func<int,int,int> plus=delegate(int arg1,int arg2) { return arg1+arg2; }2.lambda表达式用来代替匿名方法,所以一个lambda表达式也定义了一个方法。匿名方法都可以用lambda表达式来代替。 Func&lt

2020-07-07 10:12:21 1398

原创 Unity学习(C#)——反射和特性(Type、Assemly、Conditional、DebuggerStepThrough)

反射和特性(Type类)每一个类对应一个Type对象,这个type对象储存了这个类 有哪些方法和数据、成员。1.Type基本功能获取类名:type.Name获取命名空间:type.Namespace获取程序集类:type.Assembly获取公共字段:type.GetFields()返回公共属性type.GetProperties()获取所有的方法:type.GetMethods() class Program { static void Main(string[]

2020-07-07 10:08:50 1690

原创 Unity学习(C#)——LINQ的使用

武林大师 class MartialArtsMaster { public int ID { get; set; } public string Name { get; set; } public int age { get; set; } public string MenPai { get; set; } public string KongFu { get; set; } public int L

2020-07-06 14:21:09 1544

原创 Unity学习(C#)——观察者设计模式

定义猫类 class Cat { private string name; private string color; public Cat(string name,string color) { this.name=name; this.color=color; } public void CatComing() { C

2020-07-04 11:25:31 147

原创 Unity学习(C#)——事件

public delegate void MyDelegate(); //publi MyDelegatemydelegate;声明了一个委托类型变量,作为类的成员 public event MyDelegatemydelegate;//声明了一个事件,事件只能作为类里的成员来声明。

2020-07-04 11:21:11 157

原创 Unity学习(C#)——多播委托

一个委托指向多个方法。通过a += Test2;a -= Test2;来增减委托函数如果委托的任意一个函数异常,剩下的其他函数也不会被调用了。class Program { static void Test1() { Console.WriteLine("test1"); } static void Test2() { Console.WriteLine("te

2020-07-03 16:22:13 517

原创 Unity学习(C#)——冒泡排序改进

class Program { static void Sort(int[] array) { bool swapped = true; do { swapped = false; for (int i = 0; i < array.Length - 1; i++) { .

2020-07-03 14:54:38 187

原创 Unity学习(C#)——委托( delegate、Action、Func)

委托:指向一个方法,要定义方法的类型和返回值。1.使用委托using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _703委托{ class Program { private delegate string GetString(); static void Main(string[] args) {

2020-07-03 10:46:43 1453

原创 Unity学习(C#)——正则表达式

正则表达式:专门用于字符串处理的语言。可以 解决:1.检索:获取我们想要的部分2.匹配:判断给定字符串是否符合正则表达式的过滤逻辑。即表述了字符串书写的规则。定位元字符 $、^(要用using System.Text.RegularExpressions;)$在结尾处插入^在开头处插入 string s = "Hello World";string res = Regex.Replace(s, "^", "start");string res1 = Regex.Replace(s, "$

2020-07-01 14:19:00 578

原创 Unity学习(C#)——StringBuilder

StringBuilder类,是位于System.Text命名空间下的要using System.Text;StringBuilderStringBuilder str = new StringBuilder(“ycc1114”);StringBuilder str1 = new StringBuilder(20);//构造长度为20的字符串StringBuilder sb = new StringBuilder(“dsfvgthy”, 100);//如果内容超过了100,会自动扩容,自动把容量扩

2020-06-29 16:49:58 1719

原创 Unity学习(C#)——字符串的方法

例1:创建字符串,求字符串长度,判断字符串是否为,取字符串中的字母,字符串相加。namespace _622字符串string{ class Program { static void Main(string[] args) { string s = "sfdkgnd";//用string存储字符串 int length = s.Length;//求字符串长度 Console.Writ

2020-06-22 23:26:36 2332

原创 Unity学习(C#)——使用泛型索引器创建自己的集合类

namespace _620使用泛型索引器创建自己的List{ // class MyList<T>: class MyList<T>where T:IComparable//为了可以比较,表示T是继承自可以比较的接口 { private T[] array; private int count;//添加元素的个数 public MyList(int size) { if

2020-06-20 14:02:43 358

原创 Unity学习(C#)——泛型

泛型:将数据类型抽象化,实现在同一份代码上操作多种数据类型。泛型类定义 static void Main(string[] args) { var o1 = new ClassA<int>(12, 34);//构造的时候,确定泛型的类型 string s = o1.GetSum(); Console.WriteLine(s); Console.ReadKey();

2020-06-20 12:55:29 1653

原创 Unity学习(C#)——列表List的创建和使用

集合类:数组的大小是固定的,有时候不方便,需要使用集合来管理,列表是集合类的一组,且可以方便的添加和删除数据。创建和访问、插入数据。 static void Main(string[] args) { List<int> scoreList = new List<int>(); var scoreList1 = new List<int>(); var scoreList2 = n

2020-06-18 20:21:33 10825

原创 Unity学习(C#)——结构体和类赋值占内存区别

类: class Vector { public float x, y, z; }} static void Test1() { Vector v = new Vector(); v.x = 100; v.y = 100; v.z = 100; Vector v2 = new Vector(); v2

2020-06-18 19:34:41 687

原创 Unity学习(C#)——练习题

2020-06-18 15:53:29 511

原创 Unity学习(C#)——接口

定义接口时只存在方法名,不存在方法体。接口成员都是公有的,不允许修饰成员的修饰符。接口也可也彼此继承,和类的继承方式一样。接口的命名一般以I开头 interface IA { void Method1(); } interface IB:IA//IB拥有了method1、method2两个方法 { void Method2(); } class Bird:IB { public void M

2020-06-16 10:00:24 1065

原创 Unity学习(C#)——修饰符

public修饰的字段和方法,既可以在内部访问,也可在外部访问private修饰的只能在内部访问class只有在前面加public才可以在别的项目中访问newstatic 可以修饰字段和方法,使用static修饰的成员,只能通过类名访问virtualabstractoverridesealedprotected如果没有继承的话,protected和private的功能一样,但是有继承的时候, protected的可以在继承类中访问,而private不可以。...

2020-06-15 21:40:49 331

原创 Unity学习(C#)——派生类的构造函数

会先调用父类的,然后是子类的。当我们没有在子类的构造函数中声明调用的构造函数时,默认调用父类中无参的构造函数 static void Main(string[] args) { DerivedClass o1 = new DerivedClass(); Console.ReadKey(); } class BaseClass { private int x; public Ba

2020-06-15 14:25:19 570

原创 Unity学习(C#)——密封类和密封方法

C#允许把类和方法声明为sealed密封类无法被继承。密封方法:只能声明在重写的方法赏,把重写的方法声明为密封方法,表示该方法不能被重写 class BaseClass { public virtual void Move() { } }class DerivedClass:BaseClass { public sealed override void Move() {

2020-06-15 11:15:13 736

原创 Unity学习(C#)——this和base、抽象类

this和base:this可以访问当前类中的字段和方法,有没有this都可以访问。当方法的参数和字段重名时,使用this表明访问的是类中的字段。base调用父类中的方法和字段。使用base和this会自动提示有那些方法,比较方便。抽象类:只有函数定义,没有函数体的函数,抽象函数本身也是虚拟的当一个类中有抽象函数的时候,他自己必须也声明为抽象的。当继承了一个抽象类的时候,必须去实现抽象方法。 class Program { static void Main(string[] a

2020-06-15 10:44:15 3713 1

原创 Unity学习(C#)——隐藏方法

如果签名相同的方法在基类和派生类里都声明了,但是没有写清楚virtual和override,派生类就会隐藏基类方法。用new进行声明 class Enemy { public void Move() { Console.WriteLine("这是Enemy共有的Move方法"); } } class Boss:Enemy { public new void Move()

2020-06-14 16:02:49 330

原创 Unity学习(C#)——虚方法

virtual在基类函数中声明virtual,就可以在派生类函数中重写。用override比如有时候父类中有一个move方法,但是每个子类的move方式都不一样,就需要用虚方法,在子类中重写。例子: class Enemy { public virtual void Move()//虚函数 { Console.WriteLine("这是Enemy共有的Move方法"); } public void

2020-06-14 15:41:20 873

原创 Unity学习(C#)——继承

C#不支持多重实现继承基类敌人类(hp speed方法ai move)派生 boss类 class Program { static void Main(string[] args) { Boss boss = new Boss(); boss.Attack(); Console.ReadKey(); } } class Boss:Enemy//在类后面加 :父类 就是继

2020-06-14 10:56:30 428

原创 Unity学习(C#)——堆和栈

堆和栈:我们把内存分为堆空间和栈空间栈空间小,读取速度块堆空间大,读取速度慢栈:数据只能从顶端插入和删除,把数据放入栈为入栈,从栈顶删除数据称为出栈。(相当于薯片的取放,最先放进去的最后出)堆:一块内存区域,堆里面的内存可以以任意顺序存入和删除。GC(garbage collector)垃圾回收器CLR的GC是内存管理机制,我们写程序不需要关系内存的使用,CLR帮我们做了。类型被分为两种 值类型和引用类型值类型(如int)只需要单独的内存,用于存储实际的数据。放在栈中引用类型(如 str

2020-06-14 10:20:27 1580 1

原创 Unity学习(C#)——匿名类型

var匿名类型可以表示任何类型。var j=1000;之后j就变成了int型再执行j=“sjfj”;就会报错

2020-06-12 17:51:17 266

原创 Unity学习(C#)——属性的定义

public int MyIntProp{get{}set{}}定义需要名字和类型。属性包括get和set两个块,并不一定要同时存在取得属性的值,会访问属性中的get块,这个值类型必须和属性的类型一样。给属性设置值,用set块,可以在set块中通过value访问已设置的值。public Vector3(int x, int y, int z) { Console.WriteLine("构造函数2被调用了"); this.x

2020-06-12 17:44:26 1596

原创 Unity学习(C#)——构造函数

构造函数就是用于初始化数据的函数当我们不写构造函数的时候,编译器会提供给我们一个无参的构造函数,但是我们定义了一个或多个构造函数时,编译器不会在提供默认构造函数。例: class Vector3 { private float x, y, z; public Vector3()//定义了构造函数,系统自定的不会被调用了 { Console.WriteLine("构造函数1被调用了"); }

2020-06-12 16:17:43 3309

原创 Unity学习(C#)——面向对象编程

面向对象编程:让编程更清晰,把程序中的功能进行模块化划分。每个模块是孤立的提供不同的功能。结构化编程,对程序中变量进行结构化划分。类:创建对象的模板,定义了类的每个对象。类中的数据和函数称为类的成员数据成员(字段):包含类的数据、字段,常量和事件的成员函数成员(方法):提供了操作类中数据的某些功能(方法、属性、构造方法、终结器、运算符、索引器)在右侧窗口 右键——添加——类。例一:定义和声明一个类 class Vehicle { public float spee

2020-06-12 16:05:06 413

原创 C#习题:阶乘、小数取整和四舍五入

实现阶乘: static int Factorial(int n) { if (n == 1) return 1; return n * Factorial(n - 1); } static void Main(string[] args) { Console.WriteLine(Factorial(4)); Console.Rea

2020-06-12 14:24:20 240

原创 Unity学习(C#)——错误处理(异常处理)

try{}catch<>{ //写捕捉的异常类型 如果类型不对,程序仍然会中断}catch{//当catch后面不写捕捉的异常类型时,可以捕捉到任何的异常类型}finally{ 可写可不写} static void Main(string[] args) { try { int[] Array = { 1, 2, 3, 4 }; int num1 = 2

2020-06-12 14:21:49 734

原创 Unity学习(C#)——调试,中断模式下的调试,查看和改变变量的值

在vs中我们使用 Console.Write方法输出值,来查看变量是否符合预期。在Unity中,使用Debug.Log(“”);Debug.LogError(“”);Debug.LogWorn(“”);中断模式下的调试和添加断点1.在要插入断点的行,右键——断点——插入断点要取消的话点一下红点就取消了2.菜单——调试——切换断点3.按F9即可添加和取消查看变量和改变的值1.把鼠标放在变量上不点会显示2.自动窗口显示全部的变量3.监视窗口可以自己输入想要知道的变量4.即时窗口 输入

2020-06-12 13:50:24 2458

原创 C#习题:100元买100只鸡

公鸡5元一只,母鸡3元一只,小鸡1元3只,100块钱买100只鸡,有几种方案。自己做的 static void Main(string[] args) { for(int mu=0;mu<=100;mu++) { for (int gong = 0; gong <= 100; gong++) { for (int

2020-06-12 08:42:08 3583

原创 Unity学习(C#)——函数的递归调用

函数的递归调用必须有终止条件 static int F(int n) { if (n==0) return 2; //这两个是终止条件,必须有 if (n==1) return 3; return F(n -1) + F(n -2);//函数调用自身,叫做递归调用 } static void Main(string[] args) {

2020-06-10 17:00:56 424

原创 Unity学习(C#)——委托(delegate)的定义和声明

委托的定义形式和函数一样,只是需要加上delegate 且没有函数体public delegate double Mydelegate(double x, double y);委托时,返回值以及参数列表必须都一样,才可以赋值。 public delegate double Mydelegate(double x, double y); static double Multiply(double num1,double num2) {

2020-06-10 16:32:26 993

原创 函数的重载

函数名相同时,会根据变量类型使用其对应的函数 static int Max(int a,int b) { Console.WriteLine("调用了int函数"); int max = a; if (b > a) { return b; } else return

2020-06-10 16:05:20 65

原创 结构体与结构函数

在结构体内可以定义函数,方便调用 struct CustomerName { //注意:定义时 结构体内函数和变量定义都要public public string firstName; public string lastName; public string Fullname() { return firstName + lastName; } } class Progra

2020-06-10 16:03:28 1918

原创 参数数组,一个函数的参数个数不确定

参数数组与数组参数参数数组(加上params):可以调用任意多个参数,编译器会帮我们自动组成数组数组参数:要我们自己创建数组。参数数组其实帮我们省略了创建数组的过程 static int Plus(int[] Array)//数组参数 { int sum = 0; for (int i = 0; i < Array.Length;i++) { sum = sum

2020-06-10 15:39:35 156

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除