C# 类教程-多态性

C#类教程-类C#类教程-类成员:字段(域)、属性、索引C#类教程-类成员:方法、事件C#类教程-类成员:运算符重载与索引器C#类教程-类成员:构造函数和析构函数C#类教程-类成员:嵌套类型C#类教程-访问修饰符与可访问性级别C#类教程-继承C#类教程-继承:方法重载C#类教程-继承:隐藏(new)C#类教程-继承:重写(virtual与override)C#类教程-继承:抽象(abstract)C#类教程-多态性一般我们指的多态性是指“运行时的多态性”,也就是在程序运行时,系统根据不同的对象确定调用对象所属类的相应方法的能力。示例namespaceCftea{publicclassBaseClass{publicvirtualstringGetStringVirtual(){return"基类虚方法。";}publicstringGetString(){return"基类方法。";}}publicclassDerivedClass:BaseClass{publicoverridestringGetStringVirtual(){return"派生类重写方法。";}publicnews...
代码星球 代码星球·2023-04-16

C# Xml Linq-初级教程

C#XmlLinq-初级教程C#XmlLinq-轻松插入Xml子节点C#XmlLinq-查询XML示例一则首先添加程序集引用System.Xml.Linq然后引用命名空间usingSystem.Linq;usingSystem.Xml.Linq;usingSystem.Xml.XPath;引用 System.Xml.XPath的目的是使选择元素时也可以用XPath来选择,更方便。XMLLINQ使用varitems=fromiinXElement.Load(xmlPath).XPathSelectElements("//item")      selecti;foreach(variteminitems){  stringname=item.Element("name").Value;}是不是挺简单的,而且使用起来也更方便,第一个节点就用Element,取多个节点就用Elements复数,取一个属性就用Attribute,取多个属性就用Attributes复数...
代码星球 代码星球·2023-04-16

LINQ to SQL 学习笔记-查询(2)

LINQtoSQL学习笔记-查询LINQtoSQL学习笔记-查询(2)join及一对多聚合Sites和Topics是一对多的关系,即Sites的某个SiteId在Topics中可能关联一条记录,也可能是多条,也可能没有。varobj=fromsindc.Sitesjointindc.Topicsons.SiteIdequalst.SiteIdintotopicswheres.PathTree.StartsWith(pathTree)selectnew{s.SiteId,s.SiteKey,s.SiteName,TopicCount=topics.Count(i=>i.CreatedOn>=StartDate&&i.CreatedOn<EndDate.AddDays(1))};if(_orderby.SelectedValue=="quantity"){obj=obj.OrderByDescending(i=>i.TopicCount);}else{obj=obj.OrderByDescending(i=>i.SiteKey);}如上代码,看...
代码星球 代码星球·2023-04-16

LINQ to SQL 学习笔记-查询

LINQtoSQL学习笔记-查询LINQtoSQL学习笔记-查询(2)用不起?光usingSystem.Linq还不够,要用LINQtoSQL还得引用System.Data.Linq.dll。如果我们写LINQ代码时,没有自动列表提示,那多半就是这个原因了。一个简单的选择示例DataClassesDataContext(您不一定要取这个名字)是一个LINQtoSQL类,建好类后,把相应的表拖到设计器上就可以了(注意:像hierarchyid这种特殊字段类型,是不受支持的)。DataClassesDataContextdc=newDataClassesDataContext();varobj=fromtindc.Topicswheret.TopicId==topicIdselectt.TopicId;if(obj.Count()>0){Response.Write(obj.ToList<int>()[0]);//显示第一条记录,如果无记录,则[0]会出错。}纵然我们上述SQL是想选择一个int值,但结果obj不会是一个int,而是System.Linq.IQueryab...
代码星球 代码星球·2023-04-16

C# 2.0中泛型编程初级入门教程

在2005年底微软公司正式发布了C#2.0,与C#1.x相比,新版本增加了很多新特性,其中最重要的是对泛型的支持。通过泛型,我们可以定义类型安全的数据结构,而无需使用实际的数据类型。这能显著提高性能并得到更高质量的代码。泛型并不是什么新鲜的东西,他在功能上类似于C++的模板,模板多年前就已存在C++上了,并且在C++上有大量成熟应用。本文讨论泛型使用的一般问题,比如为什么要使用泛型、泛型的编写方法、泛型中数据类型的约束、泛型中静态成员使用要注意的问题、泛型中方法重载的问、泛型方法等,通过这些使我们可以大致了解泛型并掌握泛型的一般应用,编写出更简单、通用、高效的应用系统。什么是泛型我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为方法的参数类型不同。有没有一种办法,在方法中传入通用的数据类型,这样不就可以合并代码了吗?泛型的出现就是专门解决这个问题的。读完本篇文章,你会对泛型有更深的了解。为什么要使用泛型为了了解这个问题,我们先看下面的代码,代码省略了...

C# 类教程-继承:抽象(abstract)

C#类教程-类C#类教程-类成员:字段(域)、属性、索引C#类教程-类成员:方法、事件C#类教程-类成员:运算符重载与索引器C#类教程-类成员:构造函数和析构函数C#类教程-类成员:嵌套类型C#类教程-访问修饰符与可访问性级别C#类教程-继承C#类教程-继承:方法重载C#类教程-继承:隐藏(new)C#类教程-继承:重写(virtual与override)C#类教程-继承:抽象(abstract)C#类教程-多态性我们推荐您阅读同名文章:new、virtual、override、abstract等-抽象,其总结性更强。我们在分析问题时,越往上分析,就感觉结构越抽象。比如,我们分析动物的捕猎行为:这几种动物是群力合作,那几种动物是耐心守候,那几种动物是致命一击……他们都有一个方法叫“捕猎”,只是我们无法给他们一个统一的过程。此时我们可以在他们的基类中定义一个抽象方法,该方法什么事也不做,只是占个名字。publicabstractclassHuntingAnimal{publicabstractvoidHunt();}publicclassTiger:HuntingAnimal{publi...

C# 类教程继承:重写(virtual 与 override)

C#类教程-类C#类教程-类成员:字段(域)、属性、索引C#类教程-类成员:方法、事件C#类教程-类成员:运算符重载与索引器C#类教程-类成员:构造函数和析构函数C#类教程-类成员:嵌套类型C#类教程-访问修饰符与可访问性级别C#类教程继承C#类教程继承:方法重载C#类教程继承:隐藏(new)C#类教程继承:重写(virtual与override)C#类教程继承抽象abstract)C#类教程-多态性重写又称覆盖、改写。我们推荐您阅读同名文章:new、virtual、override、abstract等-覆盖(改写、重写),其总结性更强。virtual用在基类中,指定一个虚方法(属性),表示这个方法(属性)可以重写。override用在派生类中,表示对基类虚方法(属性)的重写。以上的基类和派生类都是相对的。B是 C的基类,也可以是A的派生类,B中既可以对A中的virtual虚方法用override重写,也可以指定virtual虚方法供C重写。不能重写非虚方法或静态方法。重写的基方法必须是virtual、abstract或override的。为什么override...

C# 类教程继承:隐藏(new)

C#类教程-类C#类教程-类成员:字段(域)、属性、索引C#类教程-类成员:方法、事件C#类教程-类成员:运算符重载与索引器C#类教程-类成员:构造函数和析构函数C#类教程-类成员:嵌套类型C#类教程-访问修饰符与可访问性级别C#类教程继承C#类教程继承:方法重载C#类教程继承:隐藏(new)C#类教程继承重写virtualoverride)C#类教程继承:抽象(abstract)C#类教程-多态性我们推荐您阅读同名文章:new、virtualoverride、abstract等-隐藏,其总结性更强。前面讲了重载和重写,下面谈谈隐藏,隐藏也是发生在基类与派生类之间的。示例publicclassBaseClass{publicstringGetString(){return"这是基类的一个方法。";}}publicclassDerivedClass:BaseClass{publicnewstringGetString(){return"这是隐藏了基类GetString()的方法。";}}可以看出隐藏使用的是关键字new。目前,我们已经讲了:重载、重写、隐藏,但还看不出重...
代码星球 代码星球·2023-04-16

C# 类教程继承:方法重载

C#类教程-类C#类教程-类成员:字段(域)、属性、索引C#类教程-类成员:方法、事件C#类教程-类成员:运算符重载与索引器C#类教程-类成员:构造函数和析构函数C#类教程-类成员:嵌套类型C#类教程-访问修饰符与可访问性级别C#类教程继承C#类教程继承:方法重载C#类教程继承隐藏new)C#类教程继承:重写(virtual与override)C#类教程继承:抽象(abstract)C#类教程-多态性我们推荐您阅读同名文章:new、virtual、override、abstract等-重载,其总结性更强。方法重载并不是类继承中的内容,只是它容易和重写等混淆,所以放在一起谈谈。什么是重载呢,举个例子,我们在应用System.IO.File.Create()方法时,往往可以选择几种参数,这是就方法的重载,同一个作用域、同一个方法名称、具有不同的参数类型或参数个数,在调用方法时,根据参数自动决定使用哪一个方法。示例public string GetString(){    //...}public strin...
代码星球 代码星球·2023-04-16

C# 类教程继承

C#类教程-类C#类教程-类成员:字段(域)、属性、索引C#类教程-类成员:方法、事件C#类教程-类成员:运算符重载与索引器C#类教程-类成员:构造函数和析构函数C#类教程-类成员:嵌套类型C#类教程-访问修饰符与可访问性级别C#类教程继承C#类教程继承方法重载C#类教程继承:隐藏(new)C#类教程继承:重写(virtual与override)C#类教程继承:抽象(abstract)C#类教程-多态性C#类的继承与C++等语言一个重要的不同,就是只能从一个类中继承,这是开发者在权衡了从多个类继承的优势与劣势作出的结果。不过,可以从接口继承。另外,继承可传递。构造函数和析构函数不能被继承。初始化基类可以在派生类构造函数中添加初始化基类的代码。public class BaseClass{    private int i = 0;        public BaseClass(int&...
代码星球 代码星球·2023-04-16

C# 类教程-访问修饰符与可访问性级别

C#类教程-类C#类教程-类成员:字段(域)、属性、索引C#类教程-类成员:方法、事件C#类教程-类成员:运算符重载与索引器C#类教程-类成员:构造函数和析构函数C#类教程-类成员:嵌套类型C#类教程-访问修饰符与可访问性级别C#类教程继承C#类教程继承:方法重载C#类教程继承:隐藏(new)C#类教程继承:重写(virtual与override)C#类教程继承:抽象(abstract)C#类教程-多态性声明的可访问性含义public访问不受限制。protected访问仅限于包含类或从包含类派生的类型。internal访问仅限于当前程序集。protectedinternal访问仅限于从包含类派生的当前程序集或类型。private访问仅限于包含类型。一个成员或类型只能有一个访问修饰符,使用protectedinternal组合时除外。命名空间上不允许使用访问修饰符。命名空间没有访问限制。根据发生成员声明的上下文,只允许某些声明的可访问性。如果在成员声明中未指定访问修饰符,则使用默认的可访问性。不嵌套在其他类型中的顶级类型的可访问性只能是internal或public。这些类型的...
代码星球 代码星球·2023-04-16

C# 类教程-类成员:嵌套类型

C#类教程-类C#类教程-类成员:字段(域)、属性、索引C#类教程-类成员:方法、事件C#类教程-类成员:运算符重载与索引器C#类教程-类成员:构造函数和析构函数C#类教程-类成员:嵌套类型C#类教程访问修饰符与可访问级别C#类教程-继承C#类教程-继承:方法重载C#类教程-继承:隐藏(new)C#类教程-继承:重写(virtual与override)C#类教程-继承:抽象(abstract)C#类教程-多态性在类或结构内部定义的类型称为嵌套类型。例如:classContainer{classNested{Nested(){}}}不管外部类型是类还是结构,嵌套类型均默认为private,但是可以设置为public、protectedinternal、protected、internal或private。在上面的示例中,Nested对外部类型是不可访问的,但可以设置为public,如下所示:classContainer{publicclassNested{Nested(){}}}嵌套类型(或内部类型)可访问包含类型(或外部类型)。若要访问包含类型,请将其作为构造函数传递给嵌套类型。例...

C# 类教程-类成员:构造函数和析构函数

C#类教程-类C#类教程-类成员:字段(域)、属性、索引C#类教程-类成员:方法、事件C#类教程-类成员:运算符重载与索引器C#类教程-类成员:构造函数和析构函数C#类教程-类成员嵌套类型C#类教程-访问修饰符与可访问性级别C#类教程-继承C#类教程-继承:方法重载C#类教程-继承:隐藏(new)C#类教程-继承:重写(virtual与override)C#类教程-继承:抽象(abstract)C#类教程-多态性构造函数构造函数通常用来初始化值。classCar{publicCar(){//}}构造函数的访问级别一般是public。构造函数无返回值。构造函数可以重载。如果我们的类中没有提供任何构造函数,则系统会默认给我们创建一个,我们可以使用无参数的构造函数来创建实例,比如:Carcar=newCar()。构造函数的另一用途,请参见C#私有构造函数。关于静态构造函数,请参见走进C#静态类。析构函数析构函数是当对象即将从内存中移除时由运行库执行引擎调用的方法,通常用来释放一些资源。一个类只能有一个析构函数。无法继承或重载析构函数。无法调用析构函数。它们是被自动调用的。析构函数既没有修饰...

C# 类教程-类成员:运算符重载与索引器

C#类教程-类C#类教程-类成员:字段(域)、属性、索引C#类教程-类成员:方法、事件C#类教程-类成员:运算符重载与索引器C#类教程-类成员构造函数和析构函数C#类教程-类成员:嵌套类型C#类教程-访问修饰符与可访问性级别C#类教程-继承C#类教程-继承:方法重载C#类教程-继承:隐藏(new)C#类教程-继承:重写(virtual与override)C#类教程-继承:抽象(abstract)C#类教程-多态性运算符重载下面的示例演示了一个化学反应,重载+,表示对两种化学物品进行反应。//化学分子式。H2-氢,O2-氧,H2O-水。publicenumMolecularFormulae{None,H2,O2,H2O};publicclassChemical{privateMolecularFormulae_element;publicMolecularFormulaeElement{get{return_element;}set{_element=value;}}publicChemical(MolecularFormulaeelement){Element=element;}//...

C# 类教程-类成员:方法、事件

C#类教程-类C#类教程-类成员:字段(域)、属性、索引C#类教程-类成员:方法、事件C#类教程-类成员运算符重载与索引器C#类教程-类成员:构造函数和析构函数C#类教程-类成员:嵌套类型C#类教程-访问修饰符与可访问性级别C#类教程-继承C#类教程-继承:方法重载C#类教程-继承:隐藏(new)C#类教程-继承:重写(virtual与override)C#类教程-继承:抽象(abstract)C#类教程-多态性方法“方法”是包含一系列语句的代码块,方法可以有返回值,如果没有返回值,则应该在方法名称前冠以void表示无返回值。关于方法请参见C#方法-参数、C#方法-返回值。本文写得有点复杂,要快速了解,可先参考:一个简明的C#事件示例。事件在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventAr...
首页上一页...23456...下一页尾页