C#
屠变恶龙之人
这个作者很懒,什么都没留下…
展开
-
C#之虚函数
若一个实例方法声明前带有virtual关键字,那么这个方法就是虚方法。虚方法与非虚方法的最大不同是,虚方法的实现可以由派生类所取代,这种取代是通过方法的重写实现的(以后再讲)虚方法的特点:虚方法前不允许有static,abstract,或override修饰符虚方法不能是私有的,因此不能使用private修饰符虚方法的执行:我们知道一般函数在编译时就静态地编译到了执行文件中转载 2016-06-23 16:32:26 · 498 阅读 · 0 评论 -
面向对象设计的六大基本原则
Unity脚本编程众所周知,unity的编程属于脚本化,脚本没有一个具体的概念跟架构, 导致在项目过程中,经常出现哪里需要实现什么功能,就随便添加脚本, 结果,就造成了一片混乱,不好管理。更有甚者,自己的写的代码闲置一段时间后,再去想找某个功能的实现,都要在视图中翻来覆去找半天。 哎!请容许我在此感叹一声,这还是你写的东西么? 因此,一个好的设计模式是多么的重要啊,转载 2017-03-02 08:49:40 · 1160 阅读 · 0 评论 -
C#属性
属性的定义:属性是一种类的成员,它的实现类似函数,访问类似字段。它的作用是提供一种灵活和安全的机制来访问,修改私有字段。所以属性必须依赖于字段属性的四个种类:(1)可读写(Read/Write)属性,需实现get和set访问器(2)只读(Readonly)属性,只实现get访问器(3)只写(Writeonly)属性,只实现set访问器(4转载 2017-02-21 15:19:32 · 337 阅读 · 0 评论 -
索引器实验
类的每一个属性都必须拥有一个唯一的名称,而类里定义的每一个索引器都必须拥有唯一的签名或者参数列表,这样就可以实现索引器重载。属性可以是static,而索引器必须是实例成员。为索引器定义的访问函数可以访问传递给索引器的参数,而属性访问函数则没有参数我们也可以为接口定义索引器,在为接口声明索引器的时候,记住声明只是表示索引器的存在,你只需要提供恰当的访问函数即可不必包括转载 2017-02-21 14:47:13 · 188 阅读 · 0 评论 -
装箱拆箱
1、装箱和拆箱是一个抽象的概念2、装箱是将值类型转换为引用类型 ;拆箱是将引用类型转换为值类型 利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来例如: int val = 100; object obj = val;Console.WriteLine (“对象的值 = {0}", obj)转载 2016-10-10 18:08:53 · 218 阅读 · 0 评论 -
C#基础系列——应付面试
前言:作为.Net攻城狮,你面试过程中是否遇到过这样的问题呢:什么是事件?事件和委托的区别?既然事件作为一种特殊的委托,那么它的优势如何体现?诸如此类...你是否也曾经被问到过?你又是否都答出来了呢?上两篇由浅及深介绍了下委托的用法,这篇还是来说说事件。希望通过这篇的介绍,博友能有个系统的认识,至少应付面试没问题了吧。不信?瞧瞧去~~C#基础系列目录:C#基础系列——Linq to转载 2017-03-06 19:20:08 · 205 阅读 · 0 评论 -
单例、观察者模式
几种常用的设计模式介绍1. 设计模式的起源最早提出“设计模式”概念的是建筑设计大师亚力山大Alexander。在1970年他的《建筑的永恒之道》里描述了投计模式的发现,因为它已经存在了千百年之久,而现代才被通过大量的研究而被发现。在《建筑的永恒之道》里这样描述:模式是一条由三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系。每一个模转载 2017-03-02 09:05:20 · 568 阅读 · 0 评论 -
序列化与反序列化
序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。其目的是以某种存储形成使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方。.NET框架提供了两种串行化的方式:1、是使用BinaryFormatter进行串行化;2、使用SoapFormatter进行串行化;3、使用XmlSerializer进行串行化。转载 2017-03-27 20:45:33 · 240 阅读 · 0 评论 -
特性
既然是从头学起,那理所当然的要从最简单的说起: 命名: C#中有两种命名方式,一种叫驼峰命名法,另一种叫Pascal命名法。 驼峰命名法的要求是:第一个单词的所有字母全部小写,后面的所有单词首字母大写,其余字母小写; 如:String myPhone = "IPhone5S"; //定义字符串:我的手机int enemyAge = 300; //定义整型数原创 2016-07-19 17:39:17 · 401 阅读 · 0 评论 -
Unity协程
1. 协程 在Unity 3D中,我们刚开始写脚本的时候肯定会遇到类似下面这样的需求:每隔3秒发射一个烟花、怪物死亡后20秒再复活之类的。刚开始的时候喜欢把这些东西都塞到Update里面去,就像下面这样写。 1 float nowTime = 3.0f; 2 bool isDead = true; 3 float deadTime = 20.0f; 4 5转载 2017-03-06 19:05:25 · 641 阅读 · 0 评论 -
C#/C++常见问题
什么是动态特性?在绝大多数情况下, 程序的功能是在编译的时候就确定下来的, 我们称之为静态特性。 反之, 如果程序的功能是在运行时刻才能确定下来的, 则称之为动态特性。C++中, 虚函数,抽象基类, 动态绑定和多态构成了出色的动态特性。多态,虚函数,纯虚函数多态:是对于不同对象接收相同消息时产生不同的动作。C++的多态性具体体现 在运行和编译两个方面:在程序运行时的多态性通过继承和原创 2017-03-06 19:58:51 · 469 阅读 · 0 评论 -
四种类型的参数
看公司程序偶然看到ref引用,于是查找一了番,现整理如下: 1. 值参数 (不加任何修饰符,是默认的类型) 2. 引用型参数 (以ref 修饰符声明) 3. 输出参数 (以out 修饰符声明) 4. 数组型参数 (以params 修饰符声明)1. 值类型 值类型是方法默认的参数类型,采用的是值拷贝转载 2017-03-08 21:43:22 · 9020 阅读 · 0 评论 -
ref和out的区别
首先:两者都是按地址传递的,使用后都将改变原来参数的数值。其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,ref是有进有出,out是只出不进。ref(C# 参考)ref 关键字使参数按引用传递。其效果是,当控制权传递回调转载 2017-03-08 21:37:08 · 256 阅读 · 0 评论 -
垃圾回收
摘 要基于.NET平台的开发语言中,最让开发人员爽的一点就是垃圾回收处理机制,在编码过程中,终于可以解放你的双手来关注更重要的事情。很多的资料中在讲到.NET中的垃圾回收机制时都说“CLR在合适的时候进行垃圾回收”,但什么时候才是“合适的时候”?内存又是如何分配的?CLR是如何对内存进行回收的?这一章我们来讨论有关垃圾回收的相关内容。(CTS:通用语言系统。CLS:通用语言规范。CLR转载 2017-02-21 16:32:55 · 242 阅读 · 0 评论 -
委托
熟练使用委托很有必要,但是知道委托的原理而说不清楚也是很尴尬的,尤其在面试中,在此整理一下,使描述更清晰:一.委托声明与本质1.声明委托public delegate void SayHelloDelegate(string who);112.使用ILSpy反编译后,看其本质public class auto ansi sealed SayHelloDele转载 2017-04-13 09:29:23 · 459 阅读 · 0 评论 -
lambda表达式
Lambda表达式"Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量。它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。所有Lambda表达式都使用Lambda运算符=>,该运算符读作"goes to"。Lambda运算符的左边是输入参数(如果有),右边是表达转载 2017-08-22 09:01:21 · 303 阅读 · 0 评论 -
托管堆
什么是托管堆? 托管堆是CLR中自动内存管理的基础。初始化新进程时,运行时会为进程保留一个连续的地址空间区域。这个保留的地址空间被称为托管堆。托管堆维护着一个指针,用它指向将在堆中分配的下一个对象的地址。最初,该指针设置为指向托管堆的基址。使用基于CLR的语言编译器开发的代码称为托管代码。 为什么要托管堆? .NET框架包含一个转载 2016-10-10 18:17:48 · 570 阅读 · 0 评论 -
值类型和引用类型的存储
本文主要是讨论栈和堆的含义,也就是讨论C#的两种类据类型:值类型和引用类型; 虽然我们在.net中的框架类库中,大多是引用类型,但是我们程序员用得最多的还是值类型。 引用类型如:string,Object,class等总是在从托管堆上分配的,C#中new操作符返回对象的内存地址--也就是指向对象数据的内存地址。 以下是值类型与引用类型的表:转载 2016-08-22 12:44:11 · 686 阅读 · 0 评论 -
C#中正则表达式的使用
目前为止,许多编程语言和工具都包含对正则表达式的支持,C#也不例外,C#基础类库中包含有一个命名空间(System.Text.RegularExpressions)和一系列可以充分发挥规则表达式威力的类(Regex、Match、Group等)。那么,什么是正则表达式,怎么定义正则表达式呢? 一、正则表达式基础l 什么是正则表达式 在编写字符串的转载 2016-06-23 17:52:26 · 175 阅读 · 0 评论 -
get和set的详解
一般oop语言都要求成员变量不能直接暴露给外部访问,如下:public class A{ public int Age; //这是不好的,待会有程序员可能把-1赋给Age}为了防止乱赋值,C#设计了一个属性机制,要求把成员变量设为私有,在通过属性来控制成员变量的读写,如下:public class B{ private int age; //私有成员变量转载 2016-06-23 19:37:31 · 2112 阅读 · 0 评论 -
Mono中无法使用List
List openSet = new List (); //编译出现错误只需添加:using System.Collections.Generic;原创 2016-09-19 18:12:10 · 1075 阅读 · 0 评论 -
C#之反射
前言之所以要写这篇关于C#反射的随笔,起因有两个: 第一个是自己开发的网站需要用到 其次就是没看到这方面比较好的文章。所以下定决心自己写一篇,废话不多说开始进入正题。 前期准备在VS2012中新建一个控制台应用程序(我的命名是ReflectionStudy),这个项目是基于.net 4.0。接着我们打开Program.cs文件,按照如下在转载 2016-09-18 15:03:22 · 231 阅读 · 0 评论 -
C#线程池
using System.Threading; namespace Threadsss{ class Program { static void ThreadMethod(object state) { Console.WriteLine("线程开始:"+ Thread.CurrentThr原创 2016-11-03 14:00:28 · 271 阅读 · 0 评论 -
hashset\hashtable\Dictionary
1.HashTable 哈希表(HashTable)表示键/值对的集合。在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key-value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key-value键值对均为object类型,所转载 2016-11-08 08:59:03 · 230 阅读 · 0 评论 -
线程同步
本文主要描述在C#中线程同步的方法。线程的基本概念网上资料也很多就不再赘述了。直接接入 主题,在多线程开发的应用中,线程同步是不可避免的。在.Net框架中,实现线程同步主要通过以下的几种方式来实现,在MSDN的线程指南中已经讲了几种,这里结合作者实际中用到的方式一起说明一下。1. 维护自由锁(InterLocked)实现同步2. 监视器(Monitor)和互斥锁(lock)3. 读写锁转载 2016-11-08 09:20:36 · 192 阅读 · 0 评论 -
FileInfo和DirectoryInfo
一、最直观的比较 file和fileinfo都提供对文件的操作 file类提供静态的方法,file类不能被继承,也不能产生实例,如果只需要使用一次或者次数很少,那么使用file类会比使用fileinfo效率高,但是file类每次都会花时间对方法进行安全检查,而fileinfo只是在实例产生时进行一次检查,以后就不会检查,这样的话,如果需要反复对文件操作,使用fileinfo转载 2016-10-18 10:48:39 · 380 阅读 · 0 评论 -
数组、ArrayList和List三者的区别
List 是针对特定类型、任意长度的。Array 是针对任意类型、固定长度的。ArrayList 是针对任意类型、任意长度的。Array 和 ArrayList 是通过存储 object 实现任意类型的,所以使用时要转换。在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢。数组 数组在C#中最早出现的。在内存中是连转载 2016-10-19 08:21:43 · 6888 阅读 · 1 评论 -
List用法
一、List命名空间:System.Collections.Generic(程序集:mscorlib)System.Collections (是ArrayList的命名空间)二、List描述: 1)、表示可通过索引访问的对象的强类型列表;提供用于对列表进行搜索、排序和操作的方法。2)、是ArrayList类的泛型等效类。3)、可以使用一个整数索引访问此集转载 2016-10-19 10:32:05 · 283 阅读 · 0 评论 -
C#基础二十五问
1.静态成员和非静态成员的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal 修饰符起什么作用?6.sealed 修饰符是干什么的?7.override 和 overload 的区别?8.什么是索引指示器?9.new 修饰符是起什么作用?10.this 关键字的含义转载 2016-12-28 11:50:37 · 256 阅读 · 0 评论 -
override和overload
重载应该叫overload,重写叫override;重载某个方法是在同一个类中发生的!重写是在子类中重写父类中的方法。1.override: 父类:public virtual string ToString(){return "a";} 子类:public override string ToString(){return "b";}2.o转载 2017-02-21 14:32:22 · 241 阅读 · 0 评论 -
Action与Func委托
1. 委托 如果我们要把方法当作参数来传递的话,就需要用委托。简单说,委托是一个类型,这个类型可以复制一个方法的引用。 声明委托: delegate void method(int x, string y); //注意是方法签名 class Program { private delegate string Getstri原创 2016-10-19 17:16:18 · 560 阅读 · 0 评论 -
面试题(陆续更新)
1. .NET和C#有什么区别答:.NET一般指 .NET FrameWork框架,它是一种平台,一种技术。C#是一种编程语言,可以基于.NET平台的应用。2.一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现。答:public class MainClass {转载 2016-11-29 17:18:38 · 895 阅读 · 0 评论 -
C#中的反射原理
原理其实很简单,.net所编写的程序集包含两个重要部分:IL(中间语言代码) 和metadata(元数据)。我们编写的代码中不是有很多很多的类吗,类有很多很多的成员,在编译代码的时候,元数据表就根据代码把类的所有信息都记录在了它里面(其实它就是一个数据结构,组织类的信息)。而反射的过程刚好相反,就是通过元数据里记录的关于类的详细信息找到该类的成员,并能使它“复活”(因为元数据里所记录的信息足够转载 2016-10-03 15:24:13 · 6456 阅读 · 0 评论 -
获取文件大小/查找文件
/// /// 遍历目录下所有文件 /// /// /// private static void OnGetAllTexturesUnderPath(string fullPath, List textureFullPathList) { if (!System.IO.Directory.Exists(full转载 2017-08-25 19:46:53 · 393 阅读 · 0 评论