C#
文章平均质量分 54
CGGUANG
这个作者很懒,什么都没留下…
展开
-
C#学习笔记一 设计思想的理解
你编写任何一群代码。都是为了解决 一个问题。因此C#将解决方案(solution)放在首位。所谓的namespace就是解决方案的名字,这个解决方案囊括了所有的程序和类。因此,namespace的大括号要把所有的类和函数都括起来。在C#中,是没有单个函数的。所有的函数是一个本身可以执行的函数,也是所在类的一个方法。即使是Main()函数,也要在一个类里面。原创 2016-11-05 13:35:22 · 1245 阅读 · 0 评论 -
C#学习笔记之四 C#中数组的创建方法
在初识C#的时候,一度以为,在Main()函数中,C#的关于数学运算的语法和C一模一样。但是后续学习中,遇见C#中数组的初始化,发现这是两者的最大的不同。作为一个完全的面向对象的语言,C#中,一切都是类。数组也是一个类。创建一个数组就是新建了数组类的一个实例。因此它的创建方法同类的实例的新建。原创 2016-11-05 17:36:48 · 11923 阅读 · 0 评论 -
c#学习笔记之七 如何用FileStream对象读取一个文本
为什么要有FileStream呢?因为它的使用更广?它是个什么对象呢?可以看做是一个将磁盘上的文件流传递到内存的字节数组的机制,英文称为管道——pipeline.我把它看做是一个杠杆(lever), 将磁盘上的文件流撬动到内存中。读的思路是:建立一个FileSteam对象以后,用它的Read方法,把文件流逐字节读到一个字节数组中。得到的字节数组,只是比特按字节的长度排放。每个字节到底是不是原创 2016-11-07 19:39:59 · 1901 阅读 · 0 评论 -
c#学习笔记之八 函数的代表delegate的用法:c# 求 三角函数 指数函数 积分
在实际的开发中,要用到很多的函数。而针对这些函数的一些共性的操作,也可以形成一个函数。因为是共性的操作,所以不需要具体的函数,而只要一个函数的代表就可以了。比如,求积分操作, 它的方法对所有函数都是适用的。熟悉C指针的都知道,FunctionDelegate对象包含的应该是函数的指针。所以在生成函数代表对象的时候,参数不是定义时括号里面的参数,而是函数的名字。这样就把函数的指针传递给了fd对象。这是很别扭的地方,新建类的时候括号里的参数竟然和定义时括号里的参数不一致。希望C#在以后可以改进。但是,如果你知道原创 2016-11-08 10:42:54 · 1196 阅读 · 0 评论 -
c#学习笔记之九 事件(event)的使用,一个简单的例子揭示其设计理念
什么是事件?事件就是一系列的动作。比如,柚子表白事件,就有好几个动作:1.摆柚子2.暖场舞蹈3.拿话筒表白。参考这个链接:柚子表白。理解事件是一系列动作,对理解事件的使用很关键。好了,事件是由一系列动作组成。那么动作是什么呢?动作就是函数,因为函数就是做什么,一个函数就是一个动作,反之亦然。因此,事件是由一系列函数组成的。那么,函数有大有小,把一系列的函数实体加入到事件中,是不明智的。所以加入的是函数代表。原创 2016-11-09 18:40:51 · 4497 阅读 · 0 评论 -
用FileStream复制一个任意文件
FileStream,顾名思义,文件流。流,是字节流。我的理解是,硬盘上存在一个字节流,内存里也有一个字节流,它们是对应的。程序运行时,我们只能对内存里的字节流直接操作,在它被关闭的时候,它的内容自动写入硬盘上的相应字节流。复制一个文件的基本思路是:逐一读取原文件流的字节,逐一写入新文件流中。分别用到文件流的ReadByte()和WriteByte()方法。原创 2016-11-23 05:52:07 · 2852 阅读 · 0 评论 -
关于thread一个没搞好的例子
using System;using System.Threading;namespace Demo{class F{ static string Answer() { Console.WriteLine("continue counting?y/n"); string s; s = Console.ReadLine(); return s; } publi原创 2016-11-23 08:32:00 · 547 阅读 · 0 评论 -
c# reflection的作用
Reflection 顾名思义,反映,反思。就是在程序运行的时候,能够反映程序正在执行的结构体和集合的信息的方法。这个结构体当然包括类。光是反映的信息还是不行,还要对反映的信息处理,这才称得上是反思。原创 2016-12-05 12:54:08 · 781 阅读 · 0 评论 -
我的语境对member variable,property,attribute的翻译
member variable 属性,就是属性。一个对象的属性。在现实世界语境中。在计算机术语语境中,可以称为成员变量,域。property 性质。定了,就是性质。attribute 定语。不是属性。因为属性这个译词被用了。而且它也不是属性。放在性质和方法前面,就是定语。对其定义一下。原创 2016-12-05 17:38:02 · 909 阅读 · 0 评论 -
终于掌握了最基本的socket通信在.net框架下用c#语言
哈哈,努力了有10天吧。从开始学C#的语法,再学计算机网络的基本原理,然后去看别人c# socket 编程的例子。理解了,自己能写出了,完全是自己写出的。还是很有感觉的。原创 2016-11-21 00:02:52 · 4655 阅读 · 0 评论 -
c# 学习笔记之十三 property之我见
property是c#中的一个名词。与其认为是一个专有语法,还不如认为是一系列语法的组合。property专属的关键字就只有value。其他的性质实现都是用其他的方法的组合。property通过对一系列方法的灵活组合应用,能够间接地对私有的成员变量进行赋值操作和得到值。因为是间接地,私有变量的隐私性也是得到了保护。在下面这个例子中定义一个Teacher类。老师的性别是隐私的,名头也是隐私的。但是,可以定义一个property,用set和get方法间接地外部操作。property还有一个用法,比较接近pro原创 2016-11-21 05:01:44 · 1233 阅读 · 0 评论 -
c#,一个类可以同时继承自一个普通类和一个接口
一个类,可以继承自一个普通类,继承它的成员变量和方法;也可同时继承自 一个接口,继承接口的方法并完成定义。有一个神奇的魔法:同一种对象,都是IAct对象,调用同一种方法Act() 。但是执行的情况却完全不一样。要注意的是,一个接口类对象,只能执行接口里的方法,即使返给它的是子类的对象。只要它的type是接口类,那么,它就只能执行接口里的方法。原创 2016-11-25 23:03:16 · 10720 阅读 · 0 评论 -
c# base关键字的用法
这个base用法,是在定义子类的时候,如果子类必须先存在基类的成员变量,那么就用base把基类实例化。子类继承基类的成员变量以完成后续操作。base还可以用于在一个抽象类的子类里面引用抽象类的方法。这是唯一的抽象类的方法可以在类外引用。因为它既不能实例化,方法 又不是static的。事实上,在继承类中用base方法引用基类的方法。是唯一的非static方法在类外被引用。目前所学是这样。如果子类含有比基类更多的参数。参数也是在创建子类对象的构造器中传递的,再通过base方法,将参数传递给父类构造器。父类对原创 2016-11-21 18:53:41 · 2925 阅读 · 0 评论 -
实现了本机两个进程之间的通信 c#.net socket
在没学c# .net socket编程之前。感觉实现这个好难,一点眉目都没有。但是,真的下决心去学以后。看一看基础,看一看前人的思路,实际的例子。稍稍用点心,体会体会,自己写几遍,就掌握了。然后,觉得好简单啊。如果当初 有畏难情绪,一直不下决心开始。那么,现在,依然觉得是难的,没有一点头绪,不知如何下手。想做,有必要做,需要做,那就去做。下定决心,咬定青山不放松,想法设法去做到。就做到了。这个风格不仅适用于计算机网络编程的学习。也适用于任何想做要做又没做过的事。原创 2016-12-14 06:13:24 · 7318 阅读 · 5 评论 -
c#学习笔记之五 C与C#在几种主要数据结构在上区别 数组和枚举
C和C#在设计思想上的 区别。c是扁平化的,什么东西都放在那儿可以直接用。而C#是面向对象的,所有的东西都是归成类的。我喜欢扁平化。我 还是超喜欢C语言,但是现在要在.NET上编程,只有学C#了。原创 2016-11-06 15:27:32 · 1165 阅读 · 0 评论 -
c# Linq 中为什么非要用var
因为Linq的query中的是不定类型,返回的是不定类型的指针,即不定类型的引用。在这种情况下,只能用var类型的变量存储这个不定类型的指针。var 声明的是 一个变量对象,即一个变量对象的引用(指针),我们一般以对象的引用(指针)来代表这个对象。下面这段代码充分说明了var 对象是不定类型的引用。因为是不定类型的,所以什么类型的对象的引用都可以存。原创 2016-12-03 18:31:09 · 2253 阅读 · 0 评论 -
c# 学习笔记之九 事件(event)的使用,一个简单例子揭示机理
什么是事件?我们可否看做是一个或者若干个动作?是可以的,比如柚子表白事件,包含几个动作:1.摆柚子2.暖场舞蹈3.拿话筒表白。一个事件包含几个动作,而每个动作都是一个函数,因为在C#中,函数就是做(),因此一个事件由几个函数组成。这么多函数,是用函数代表表示的。那么,什么是函数代表呢?可以这样认为,函数代表就是函数名。你说,函数的代表是不是函数名呢?当然是了。原创 2016-11-22 21:10:12 · 3483 阅读 · 0 评论 -
C#学习笔记三 类的成员变量的可见性需要个性化声明
本来想,按照逻辑。如果在class前面加一个public。那么整个class都应该是public的。但是,目前的C#版本不是这样的。在需要外部使用的成员变量前面需要逐一加public声明。如果没有加,外部是无法使用的。原创 2016-11-05 15:17:21 · 712 阅读 · 0 评论 -
C#学习笔记二 在类下不能对变量赋值,赋值必须发生在函数中
在如下代码块中,我对类里的变量进行赋值,是错误的。using System;namespace solutionname{ class cock{ float length; length = 16;//error! } class application{ public static void Main() { Console.Read(原创 2016-11-05 13:43:04 · 2725 阅读 · 0 评论 -
C# private 声明符的疑惑 是多余的吗
如果在成员变量前面加了public,那么就可以被外部使用。没有加,就是外部不可见的。那么还要一个private声明符,是不是多余的呢?原创 2016-11-05 15:56:43 · 1296 阅读 · 1 评论 -
C#中如何直接引用类的一个函数?
将函数声明成static类型就可以了。当然,前面要加上public声明可见性,否则默认是private,就不能被其他类中的函数使用了。例如,在类中先将函数声明(该函数是一个返回值为int的函数):class Caculate{public static int Sqrt(int a){...} }在另一个类中直接引用该类下的函数,不用实原创 2016-11-05 17:05:21 · 13448 阅读 · 1 评论 -
C#学习笔记之六 类定义中static关键字的用法暨C#中静态变量的意义与使用
在定义类中的一个成员变量的时候,如果使用了static 关键字。那么这个类就只会 有这一个变量,称它是静态变量,它是属于这个类的,是类的专有的静态变量,而不是属于类的实例(对象)的。那么,属于这个类的静态变量,与该类之下对象的关系是什么呢?很容易想到,作为类专有的静态变量,应该是被类的所有对象的方法所共用的。原创 2016-11-06 21:47:44 · 4953 阅读 · 1 评论 -
c#学习笔记之十 socket编程的listen()方法参数的理解,即backlog
首先,强烈推荐一位cnblogs的博主——sunev。这是他的博客链接我看了国内外很多资料,都对c# socket编程不甚了解。但是,看了他的博客后,有醍醐灌顶之感。他的博文:基于c#的socket编程的TCP同步实现是我看过的最好的TCP socket入门文章。他首先讲了服务器端的代码。他的代码前面都好理解。但是到了socket.listen(10)这里,我有一个疑问,10代表什么?查阅原创 2016-11-12 13:31:50 · 14939 阅读 · 5 评论 -
c# multi thread programming ,c# 多线程编程
在这段代码中,可以看出,当主线程在执行一些耗时的代码的时候。子线程的工作仍在同时进行。这样的并发同时运行两段代码,与单线程执行完一段代码再执行一段代码相比,就节约了很多时间。在主线程得到了子线程运行函数的结果以后,再进行利用,给它加上一个数。演示了主线程如何得到子线程的运行结果并利用。下面我用单线程的模式运行上面的代码,显然耗时得多。原创 2016-11-29 23:42:49 · 3445 阅读 · 0 评论 -
c# 类的构造函数的默认定义和个性化定义
初学者可能会有一个疑问。因为类的定义格式和类的建造格式不一样。后来搞懂了。定义了一个类,则有一个默认的与类名同名的构造函数,它建造类的对象的成员,然后返回这个对象。我们在建造的时候,调用的就是这么一个函数。当然,也可以个性化定义这个构造函数。原创 2016-11-18 16:12:37 · 2390 阅读 · 0 评论 -
c# 用 FileStream类简单实现向一个文本里写字符串
FileStream——文件流是指将一个文件放在内存里。放到内存里面之后,就可以读和写。我们今天只探讨写,而且是一般情况,往文件的末尾写东西。这里需要一个流写工具——StreamWriter.将文件流对象传递给流写工具,流写工具就知道该在哪里写东西了。写完之后,清洗缓冲区,那么内存里的文件流就会写到磁盘里。下面是代码:sing System;using System.IO;/原创 2016-11-19 00:10:13 · 3460 阅读 · 0 评论 -
c# delegate应用体现了程序设计的分层思想
using System;namespace DataAndOperationUseDelegate{delegate int handler (int x);class F { public static int Square(int x) { return x*x; } public static int Double(int x) { r原创 2016-11-19 03:37:10 · 635 阅读 · 0 评论 -
c#学习笔记之十五 目前多线程执行函数的思路
1.如果不用传递和返回结果,仅仅是执行代码体,则直接在新建线程的时候传递函数的名词。2.如果需要传递参数或(和)返回结果,那么就使用函数代表的BeginInvoke()和EndInvoke()方法,中间需要一个IAsyncResult(非同步结果对象)作为转接的接口。原创 2016-12-11 18:20:37 · 2138 阅读 · 0 评论 -
c#学习笔记之十四,什么是method overloading?
什么是method?函数也.overloading,是过载的意思。为什么会过载呢?因为一个函数,本来后面拖着两个参数的,现在拖着三个参数了,那不是过载是什么?为什么同一个函数,后面可以跟两个参数,也可以给三个甚至是更多个参数呢?因为,C#是一个强类型语言。而一个函数的类型的,是有返回值和参数情况决定的,参数情况不一样,那么函数就是不同的。这一点可以参考函数代表(delegate)的声明格式。原创 2016-11-21 05:49:02 · 1593 阅读 · 0 评论 -
c# 方法的继承
如果基类一个方法,子类再定义一个同名的方法。则基类的方法被覆盖。这个很好理解。在实例化的时候。子类的对象当然会继承基类定义的方法。这个时候,子类的对象已经 有了这个方法。此时,再对子类定义一个同名方法,那么就覆写了基类的这个方法。这个规则是默认这样的。原创 2016-11-21 09:35:04 · 2075 阅读 · 0 评论 -
原创 导弹能否摧毁目标?一个简单的例子说明c# 中property(性质)的用法
假设有一种秘密型号的导弹,它的射程和弹头当量是保密的。但是它能否摧毁既定目标是需要让外界知道的,以发挥其威慑作用。我们在建立导弹类的时候,设置两个私有变量:射程和弹头当量;再设置一个公有性质,为布尔变量,如果能摧毁目标,则该变量为真。这个公有的能否摧毁性质可以被外界所知,它是由上述两个私有变量计算来的。但是这两个私有变量是外界不可见的。下面是完整的c#代码na原创 2016-12-05 17:31:13 · 1155 阅读 · 1 评论