.Net C#
文章平均质量分 59
.NET 基本语法介绍
厦门德仔
分享与交流:信息化建设、数字化转型、项目管理、流程梳理与再造、前后端开发、财务管理、数据库、网络、家庭教育与人生感悟等希望我的博客能带您愉快心情。
展开
-
C#中对象的声明和使用
<br />类和对象是密不可分,有类就有对象。有对象就有类,世界万物都可以看作对象。用面向对象的思想解决问题,就要把一切都看成对象。<br />对象是不能脱离类存在的。类是对象共同拥有的属性的描述,由对象归纳成类,对象是类的具体体现。如汽车是一个类,而具体到某个人的车就是对象。<br />在C#中,所有的东西都可以看作对象。把一个东西看成对象,我们就可以孤立的去审查它的性质,它的行为,进而研究和其他对象的关系。同样,在程序中使用对象的概念,就让我们把一个程序看成是很多对象相互作用的结果。<br />对象必须原创 2010-11-22 10:56:00 · 1833 阅读 · 0 评论 -
C#方法参数传递-同时使用ref和out关键字
<br />在方法参数传递中,可以同时使用ref和out关键字,但是要注意ref和out参数传递的不同。<br />using System;<br />class Program<br />{<br />static void Main()<br />{<br /> Program obj = new Program();<br /> int score = 55; //声明原来分数<br /> int refscore, outscore; //声明两个变量<br /> obj.转载 2010-11-22 15:08:00 · 1534 阅读 · 0 评论 -
C#中this关键字-调用本类成员
<br />关键字this有两种基本的用法,一是用来进行this访问,二是在声明构造函数时指定需要先执行的构造函数。<br />一、this访问<br />在类的实例构造函数和实例函数成员中,关键字this表示当前的类实例或者对象的引用。this不能用在静态构造函数和静态函数成员中,也不能在其他地方使用。<br />当在实例构造函数或方法内使用了与字段名相同的变量名或参数名时,可以使用this来区别字段和变量或者参数。下面的代码演示了this的用法。<br />public class Dog<br />{转载 2010-11-22 15:41:00 · 1332 阅读 · 1 评论 -
类和对象的关系
<br />类是具有相同数据结构(属性)和相同操作功能(行为)对象的集合。对象就是符合某种类所产生的一个实例。对象与类的关系是:<br />对象的共性抽象为类,类的实例化就是对象。<br />类是一个抽象的概念,而对象是具体的,比如说车是一个类的话,张三的那辆奔驰车就是车这个类的一个实例,动物是一个类的话,李四的家养的那只猫就是动物类的一个对象实例。<br /><br />人类就是一个类,这个类包含了所有人的共同属性,像有四肢,有名字,会说话等等。而实例就是这个人类的具体实现,比如叫张三的这个人就是人类的一原创 2010-11-22 10:39:00 · 1227 阅读 · 0 评论 -
C#是面向对象编程语言
<br />C#是纯粹的面向对象编程语言,它真正体现了“一切皆为对象”的精神。在C#中,即使是最基本的数据类型,如int,double,bool类型,都属于System.Object类型。此外,使用C#编程,不会存在与游离于对象之外的属于过程的东西。<br />这个世界是由什么组成的?这个问题如果让不同的人来回答会得到不同的答案。如果是一个化学家,他也许会告诉你“还用问嘛?这个世界是由分子、原子、离子等等的化学物质组成的”。如果是一个画家呢?他也许会告诉你,“这个世界是由不同的颜色所组成的”。……呵呵,众说原创 2010-11-22 10:39:00 · 2296 阅读 · 0 评论 -
C#接口-深入浅出
<br />假设我们公司有两种程序员:VB程序员指的是用VB写程序的程序员,用VBpro这个类表示;C程序员指的是用C写程序的程序员,用Cpro这个类来表示。每个类都有一个WriteCode()方法。<br />现在公司来了一个项目,要求派某个程序员写一个程序。<br />using System;<br />//vb程序员<br />class VBpro<br />{<br />public void WriteCode()<br />{<br /> Console.WriteLine("我用vb转载 2010-11-22 15:54:00 · 1009 阅读 · 0 评论 -
C#定义属性-只写属性
<br />只有set访问器的属性为只写属性,此属性不定义get访问器。语法如下:<br /><访问修饰符> 数据类型 属性名<br />{<br />set{}<br />}<br />定义了只写属性,就只能通过该属性赋值,而不能取值。<br />private int _sex;<br />public int Sex<br />{<br />set<br />{<br /> _sex=value;<br />}转载 2010-11-22 15:28:00 · 2362 阅读 · 0 评论 -
从日常生活中看对象
<br />其实对象这个名次对我们来说一点也不陌生,因为我们的日常生活中。随处可见的都是对象,小到地上的一粒沙,大到中国的万里长城,埃及的金字塔,所有的东西都是对象(万物皆对象) <br />我们之所以会对对象这个词比较陌生,是因为我们平时不直接这么称呼它们,那么我们平时是怎么称呼这些对象呢?通常我们会以这个对象分类的名称来称呼它,例如路上有许多车子,天空有许多鸟,这里的车子,鸟都只是一种对象的分类而已,而这些分类我们习惯称为类。所以世界上有许多的车类,鸟类,鱼类等。<br />那么对象和类之间有什么关系呢原创 2010-11-22 10:38:00 · 923 阅读 · 0 评论 -
C#接口-接口的继承
<br />类之间可以继承,和类一样,接口也允许继承。C#中接口可以多继承,接口之间可以互相继承和多继承。普通类和抽象类可以继承接口。一个类可以同时继承一个类和多个接口,但是接口不能继承类。<br />假如你是一名在职学习的学生,你就具有双重身份。一个身份是学生,必须完成学习任务,另一身份是职员,必须完成工作任务。进一步说,如果你是计算机类学生,除学基础课外,还必须学习C#程序设计。现在建立一个模型,应该如何建立?<br />我们首先来定义一个学生接口,规定学生必须学习,再建立一个职员接口,规定职员必须完成转载 2010-11-22 15:55:00 · 3107 阅读 · 0 评论 -
C#定义属性-静态属性
<br />C#静态属性可以是读写属性,只读属性,只写属性中的任意一种。也就是说,静态属性可以同时包含set访问器和get访问器,也可以只包含其中一种。<br />静态属性定义方式就是在属性前加static关键字,语法如下:<br /><访问修饰符> static 数据类型 属性名<br />{<br />get{}<br />set{}<br />}<br />静态访问器适用于整个类,而不是类的实例。静态属性中的set{},get{}访问器只能访问类的静态成员。静态属性可以通过类名访问,不能使用实例调用,转载 2010-11-22 15:29:00 · 1435 阅读 · 0 评论 -
C#类、接口、虚方法和抽象方法-非抽象类与接口的差别
<br />非抽象类和接口的差别很大,它们的差别主要表现在以下几个方面:<br />1、非抽象类可以有成员变量、常量和构造函数,而接口中不能存在常量、域、操作符、构造函数或析构函数,而且不能包含任何静态成员。<br />2、一个非抽象类可以继承多个接口,而只能继承一个类;<br />3、非抽象类中可以定义具体的方法和实现,而接口只定义方法没有具体的实现;<br />4、接口成员一定是公共的,而且不能声明为虚拟或者是静态的,而非抽象类中是没有这些限制。<br />5、非抽象类可以被实例化,而接口不可以。一般来转载 2010-11-22 15:56:00 · 1077 阅读 · 0 评论 -
C#对象初始化器
<br />在C# 3.0中增加了一个名为"对象初始化器"(object initializer)的特性 ,它能初始化一个对象中的所有允许访问的字段和属性。具体地说,在创建对象的构造器调用之后,你现在可以增加一对大括号,并在其中添加一个成员初始化列表。每个成员的初始化操作都是一个赋值操作,等号左边是一个允许访问的字段属性,右边则是具体要赋的值。<br />创建一个Student对象,通过其属性初始化对象,通常都这样实现。<br />Student str=new Student();<br />stu.Na转载 2010-11-22 15:32:00 · 993 阅读 · 0 评论 -
C#类、接口、虚方法和抽象方法-抽象类和接口的区别
<br />一、抽象类:<br /> 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。<br />二、接口:<br /> 接口是引用类型的,类似于类,和抽象类的相似之处有三点:<br /> 1、不能实例化;<br /> 2、包含转载 2010-11-22 15:56:00 · 1022 阅读 · 0 评论 -
C#类的继承-什么是继承
<br />为了能够合理描述自然界的规律,面向对象的编程引入了继承的概念,它是面向对象编程中最重要的概念之一,定义了如何根据现有类创建新类的过程。任何类都可以从另外一个类继承,遵循的原则是:一个类派生出来的子类具有这个类所有的公共属性和方法。<br />C#提供了类的继承机制,创建新类所根据的基础类称为基类或父类,新建的类称为派生类或子类。继承是实现代码重用的重要机制。使用继承可以不需要从头开始创建新类,可以在现有的基础上添加新的方法和属性,节约时间和精力,大大提高效率。<br />同类事物具有共同性,在同转载 2010-11-22 15:33:00 · 1461 阅读 · 0 评论 -
C#使用属性
<br />我们通常把字段定义为私有的,属性定义为公共的,通过属性访问字段。定义一个属性时,类型必须和它所访问的字段一致。<br />例如:姓名_name为string类型,那么它对应的属性Name也一定是string类型。<br />注意:属性不是必须和字段相关联的,但是没有字段单独定义属性没有任何意义。属性定义时属性名后边没有小括号,set{}和get{}访问器也都是大括号,不是小括号。<br />属性本质上是方法,只是与方法不同。可以实例化对象后给属性赋值,也可以取值,只调用属性即可。不需要访问其中的转载 2010-11-22 15:30:00 · 1072 阅读 · 0 评论 -
C#类、接口、虚方法和抽象方法-虚拟方法与抽象方法之区别
<br />虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢?<br />1. 虚方法必须有实现部分,并为派生类提供了重写该方法的选项。抽象方法没有提供实现部分,抽象方法是一种强制派生类重写的方法,否则派生类将不能被实例化。<br /><br />//抽象方法<br />publicabstractclass Animal<br />{<br /> publicabstractvoid Sleep();<br /> publicabstractvoid Eat();<br />}<br转载 2010-11-22 15:55:00 · 1134 阅读 · 0 评论 -
C#自动属性
<br />属性是一个非常有用的技术,以C#应用广泛。我们采用手动输入费时费力。vs2008提供了一种快速创建属性的方式,重构/封装字段。首先在一个类中定义一个私有字段,选择这个字段,右击此字段,在弹出的快捷菜单中选择“重构”——“封装字段”命令。<br />在单击“封装字段”后,在“属性名”文本框中可以修改属性名称,默认是将字段名首字母大写,一般不需要修改,然后单击“确定”按钮。<br />using System;<br />using System.Collections.Generic;<br />转载 2010-11-22 15:31:00 · 833 阅读 · 0 评论 -
C#继承使用实例
<br />继承是面向对象编程最重要的特性之一。任何类都可以从另外一个类继承,这就是说,这个类拥有它继承的类的所有成员。在面向对象编程中,被继承的类称为父类或基类。在C#中提供了类的继承机制,但只支持单继承,而不支持多重继承,即在C#中一次只允许继承一个类,不能同时继承多个类。<br /><br />说明:继承类时,需要使用冒号加类名。<br />创建派生类的语法如下:<br /><访问修饰符> class 派生类名:基类名<br />{<br />//类代码块<br />}<br />下面通过实例来介绍类转载 2010-11-22 15:33:00 · 1262 阅读 · 0 评论 -
C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例
<br />1.抽象类可以有实现(包括构造函数),而接口不可以有任何实现。<br />namespace ConsoleApplication1 <br />{ <br /> class Program <br /> { <br /> interface IMyInterface1 <br /> { <br /> void IMethod1(); <br /> void IMethod2(); <br /> }转载 2010-11-22 15:57:00 · 974 阅读 · 0 评论 -
C#类、接口、虚方法和抽象方法-抽象类与接口的区别与联系
<br />C#抽象类和接口之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于抽象类和接口的选择显得比较随意。其实,两者之间还是有很大的区别的。首先,以抽象类的方式定义一个公共的抽象类Animal如下:<br />public abstract class Animal <br />{<br /> public abstract void Run();<br /> public abstract void Eat(); <br />} <转载 2010-11-22 15:58:00 · 1155 阅读 · 0 评论 -
C#继承与构造函数的调用
<br />1、实例化父类时,可以使用new子类,执行构造函数顺序为:先执行父类构造函数,再执行子类构造函数。<br />2、实例化子类时,只可以new子类,执行顺序同上。<br />3、父类实例化后,只能执行父类的方法,获得父类的属性等。<br />4、实例化子类后,可同时执行子类和父类的方法和属性,如同名方法,则执行子类的方法。<br />我们看以下的代码:<br /> public class A<br /> {<br /> public A(string a) { }<br转载 2010-11-22 15:36:00 · 1120 阅读 · 0 评论 -
C#接口、类和抽象类
<br />一个类可以同时继承类和接口,或者抽象类和接口,抽象类和类不能在一个类的继承列表中同时出现。如果子类同时继承类,抽象类和接口,一定要把类或者抽象类写在前面,接口写在后面,类名和接口名之是用“,”隔开,接口没有先后顺序。每一种继承要根据各自的规则去实现。<br />如果希望学生都具有姓名、性别、年龄和学号等属性,当可以直接在计算机专业的学生类中创建,但是,如果还有别的专业的学生,那么都要重新写一遍,不符合代码重用的原则。现在把公用代码提取出来创建一个父类,在父类中赋予这些属性就可以。由于学号只有学生转载 2010-11-22 15:59:00 · 1112 阅读 · 0 评论 -
C#类、接口、虚方法和抽象方法-抽象类和接口的相同点和区别
<br />一、抽象类<br /> (1) 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法<br /> (2) 抽象类不能被实例化<br /> (3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类<br /> (4) 具体派生类必须覆盖基类的抽象方法<br /> (5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生类必须覆盖它们。如:<br />using System;<br />pub转载 2010-11-22 15:58:00 · 1097 阅读 · 0 评论 -
C#构造函数在继承过程中的执行顺序
<br />using System;<br />class Program<br /> {<br /> static void Main(string[] args)<br /> {<br /> childTest test = new childTest();<br /> childTest test1 = new childTest(2);<br /> childTest test2 = new chi转载 2010-11-22 15:34:00 · 1753 阅读 · 0 评论 -
C#继承的特性
<br />面向对象的程序设计技术引入了继承的概念。一个类从另一个类派生出来时,派生类从基类那里继承特性。C#中,派生类从它的直接基类中继承成员:方法、域、属性、事件、索引指示器。除了构造函数和析构函数,派生类隐式地继承了直接基类的所有成员。<br />一、继承的传递性<br />派生类从基类那里继承特性。派生类也可以作为其它类的基类。从一个基类派生出来的多层类形成了类的层次结构。就像现在中爷爷,爸爸和儿子的关系。儿子不仅可以访问父类爸爸的所有公有属性方法,也可以访问爷爷的所有公有属性和方法,这种关系称为继转载 2010-11-22 15:35:00 · 1662 阅读 · 0 评论 -
C#接口-接口定义
<br />接口用来描述一种程序的规定,接口描述可属于任何类或结构的一组相关行为。实现接口的类或结构要与接口的定义严格一致。接口可由方法、属性、事件、索引器或这4种成员类型的任何组合构成。接口不能包含字段。接口成员一定是公共的。<br />定义接口的语法如下:<br /><访问修饰符> interface 接口名<br />{<br />//接口主体<br />}<br />下面定义一个开关的接口,代码如下:<br />public interface IChoose<br />{<br />void On转载 2010-11-22 15:47:00 · 1208 阅读 · 0 评论 -
C#构造函数的重载
<br />C#中的构造函数也可以应用方法重载。C#中有默认构造函数,也可以定义带参数的构造函数。构造函数必须与类同名,并且不能有返回值。所以C#构造函数重载相当于不同数量的参数方法重载。<br />using System;<br />class Animal<br />{<br />public string _name;<br />public string _color;<br />public int _speed;<br />public Animal()<br />{<br /> thi转载 2010-11-22 15:19:00 · 1307 阅读 · 0 评论 -
C#接口-接口作用
<br />C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,然后在继承该接口的类里面要实现接口的所有方法的代码,但没有真正认识到接口的作用的时候就觉得用接口是多此一举,当然你这样想那是绝对绝对错误的,比尔盖茨的微软请的员工都是比尔盖茨还聪明的人,他们的C#能添这样的多足吗?<br />可简单的这样理解接口:接口是方法的抽象,如果不同的类有同样的方法,那么就应该考虑使用接口。 <br />例如,人和车都有“跑”的方法,那么就可以定义一个接口IR转载 2010-11-22 15:48:00 · 1027 阅读 · 0 评论 -
C#数据类型-结构类型
<br />有时我们可能对同一事物使用多个不同的变量来描述,如果将其分开来,显得不够灵活。结构类型很好的解决了这个问题,它把多个不同的变量组织在一起。结构和类有很多相同的地方,结构可以看成一个轻量的类。结构使用struct关键字定义。<br />其定义方法如下:<br />struct 结构名称<br /> {<br /> 成员声明列表;<br /> }<br />成员可以包含构造函数,常数,字段,方法,属性,索引器,运算符和嵌套类型等。<br />每个成员在转载 2010-11-22 15:20:00 · 1025 阅读 · 0 评论 -
C#多态性-抽象类对象引用子类实例
<br />C#规定,抽象类不能实例化,如下代码会发生编译错误:<br />Animal myanimal=new Animal();<br /><br />那么如下代码正确吗?<br /><br />Animal myanimal=new Dog();<br />myanimal.Cry();<br />这段代码是完全正确的。既然抽象类不能实例化,那么这段代码为什么又可以运行呢?首先要明确上面的代码并没有实例化抽象类,只是声明了一个抽象类的对象myanimal,实例化时必须通过构造函数来实现,这里调用的是转载 2010-11-22 15:46:00 · 1636 阅读 · 0 评论 -
C#接口-接口概述
<br />C#不支持多重继承,但是客观世界出现多重继承的情况又比较多。为了避免传统的多重继承给程序带来的复杂性等问题,C# 提出了接口的概念。通过接口可以实现多重继承的功能。<br />接口是单纯对事物行为的描述。例如,电器都有“开”和“关”两个行为,开关的作用在于打开或关闭电器,而开关的形式也是不一样的。电灯、电视、电扇,电冰箱各自完成的开关的动作也是不一样的,但是所有的电器都必须具有开和关的功能,这是一个规定,在程序设计中,这个规定就是接口。<br />C#中接口的作用的什么?不是可以继承吗?为什么还转载 2010-11-22 15:47:00 · 1024 阅读 · 0 评论 -
[方法]按日期测试时间跨度问题--时间差(小时,分钟,秒)
在处理工时的时候需要这样处理问题.启动时间 结束时间 就需要处理多少小时,多少分钟等写了一个函数处理 protected decimal GetSpanTime(TextBox txtstarttime, TextBox txtendtime) { int year = int.Parse(txtstarttime.Text.ToString().Su原创 2009-01-05 13:33:00 · 2102 阅读 · 1 评论 -
各类验证码收集 整理笔记
样式一:protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { this.GenImg(this.GenCode(4)); } }转载 2012-02-19 16:47:56 · 1335 阅读 · 1 评论 -
C#方法参数个数和类型相同,名称不同,可以实现重载吗
<br />比如说:<br />(1)public void add(int i){}<br />(2)public void add(int i,int j){}<br />(3)public void add(int a){}<br />(4)public void add(double i,int j){}<br /><br />1和2算重载因为那个数不同。<br />2和4也算重载因为类型不同。<br />那1和3算不算重载?他们的名字不同??<br />这不能通过编译。因为1和3本质是一样的两个方转载 2010-11-22 15:18:00 · 3239 阅读 · 0 评论 -
C#接口-接口作用浅谈
<br />继承“基类”和实现“接口”都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的。<br />1、接口用于描述一组类的公共方法和公共属性, 它不实现任何的方法或属性,只是告诉继承它的类至少要实现哪些功能,继承它的类可以增加自己的方法。<br />2、使用接口可以使继承它的类: 命名统一规范,易于维护。比如: 两个类 “狗”和“猫”,如果它们都继承了接口“动物”,其中动物里面有个方法Behavior(),那么狗和猫必须得实现Behavior()方法, 并且都命名为Behavior。如转载 2010-11-22 15:49:00 · 889 阅读 · 0 评论 -
C#中this关键字的使用
<br />保留字this仅限于在构造函数、类的方法和类的实例中使用,它有以下含义:<br />●在类的构造函数中出现的this作为一个值类型,它表示对正在构造的对象本身的引用。<br />●在类的方法中出现的this作为一个值类型,它表示对调用该方法的对象的引用。<br />●在结构的构造函数中出现的this作为一个变量类型,它表示对正在构造的结构的引用。<br />●在结构的方法中出现的this作为一个变量类型,它表示对调用该方法的结构的引用。<br />除此之外,在其它地方使用this保留字都是不合法转载 2010-11-22 15:21:00 · 976 阅读 · 0 评论 -
C#接口-接口的实现
<br />C#定义了接口后,就要在子类中实现。C#中通常把子类和父类的关系称为继承,子类和接口的关系称为实现。子类可以继承一个父类,可以实现多个接口。接口中不能定义构造函数,所以接口不能实例化。<br />下面我们看例子:<br />using System;<br />public interface IChoose<br />{<br />void On();<br />void Off();<br />}<br />public class TV: IChoose<br />{<br />priva转载 2010-11-22 15:50:00 · 1160 阅读 · 0 评论 -
C#中的结构体要使用new来实例化吗?
<br />声明结构的默认(无参数)构造函数是错误的。总是提供默认构造函数以将结构成员初始化为它们的默认值。在结构中初始化实例字段也是错误的。 如果使用 new 运算符创建结构对象,则会创建该结构对象,并调用适当的构造函数。与类不同,结构的实例化可以不使用 new 运算符。如果不使用 new,则在初始化所有字段之前,字段都保持未赋值状态且对象不可用。 结构类型使用new不会分配托管堆分配内存而是调用构造函数初始化字段。结构的构造函数要么是有参数的,不可能是无参数,应为无参数是系统自己隐式添加的,就算有另外的转载 2010-11-22 15:21:00 · 2383 阅读 · 0 评论 -
C#接口-对接口理解实例代码
<br />using System;<br />public interface Iren<br />{<br />void eat();<br />void sleep();<br />}<br />public class Xuesheng: Iren<br />{<br />public void eat()<br />{<br /> Console.WriteLine("我是一个学生,我去食堂吃饭");<br />}<br />public void sleep()<br />{<br />转载 2010-11-22 15:52:00 · 1043 阅读 · 0 评论 -
C#属性简介
<br />我们知道,类成员包括变量和方法。如果希望其他类能够访问成员变量的值,就必须定义成公有的,而将变量设为公有public,那这个成员变量的就可以被任意访问(包括修改,读取),这样不利于数据安全。那怎么办呢?<br />C#通过属性特性读取和写入字段(成员变量),而不直接直接读取和写入,以此来提供对类中字段的保护。属性可用于类内部封装字段。属性是C#面向对象技术中封装性的体现。<br />注意:字段就是类的成员变量,为配合属性而这样称呼的。<br />属性和字段的区别: 属性是逻辑字段;属性是字段的扩转载 2010-11-22 15:22:00 · 972 阅读 · 0 评论