C#编程基础
文章平均质量分 55
一把油纸傘
这个作者很懒,什么都没留下…
展开
-
为什么需要使用泛型类<T>
使用泛型行的最大好处就是代码重用,合理的使用泛型可以大大的解决我们编写代码的数量,同时也可以提高我们的程序性能下面我通过一个简单的例子讲解 现在我们需要一个处理两个数据类型,int 类型和String的数据,他们都需要用到栈的操作,当我没没有泛型的时候需要写出两个栈的数据结构 2.1 处理int类型public class Stack { ...转载 2018-07-29 00:40:12 · 815 阅读 · 0 评论 -
经常容易忘记篇
一、访问修饰符汇总1)public 所属类的成员以及非所属类的成员都可以访问 2)internal 当前程序集可以访问 (可以单纯的指该项目下)一般修饰类、变量、方法和属性 ,其他项目将无法引用程序集(通俗):一个解决方案,里面可以包括多个程序集,程序集简单一点理解就是程序的集合,里面可以包括很多类比如,你写了一个记录日志的DLL,任何项目只要引用此DLL就能实现...转载 2017-11-30 10:02:22 · 251 阅读 · 0 评论 -
数组操作简单写法
// var bodyList = workPart.Bodies.ToArray().ToList().ConvertAll(body => body.Tag).ToArray();//等价于 Part workPart = theSession.Parts.Work;//获取当前工作部件 var bodyList= workPar...转载 2017-02-08 23:23:33 · 755 阅读 · 0 评论 -
C#编写高质量代码第三天
总结:const 天然是static修饰,readonly修饰的值类型和引用类型都不可以再重新赋值,但是对于引用类型指向的实例对象可以再次赋值。 不要显示赋值给枚举对象,枚举对象默认0为初始值,保持默认就可以,因为如果需要增加枚举值时如果已经显示的复制会发生错误 枚举的使用:通过值获取枚举类型(枚举)int 强转 ,反之要等到枚举类型值(int)枚举对象 using System...原创 2018-08-08 00:23:41 · 219 阅读 · 0 评论 -
C#编写高质量代码第四天
总结:重载类能够实现没有继承关系直接的类与类之间的转换,重载运算符能够实现类与类的运算符运算,能够自定义预算符实际的要求,同时也比较直观。 重写Icomparable<T>和Icompare<T> 前者实现与当前类中参数的比较器,后者则是实现非默认比较器,是实现外部类之间的比较(集合中会自动获取当前中所有的类进行自动比较和排序)。实现方式是List<>集合...原创 2018-08-09 00:40:42 · 273 阅读 · 0 评论 -
C#编写高质量代码第五天
总结:1、对于引用类型,我们要定义“值相等性”,应该仅仅去重载equals2、根据目前的了解RfrenceEquals只使用于直接比较字符串(那为啥我不直接用==来比较字符串呢?),不适合类和int类型3、重写Equals方法的同时,也应该实现一个类型的接口IEquatable<T>using System;using System.Collections.Generic...原创 2018-08-14 00:07:58 · 208 阅读 · 0 评论 -
C#之out和ref的用法区别&&NX获取面法相及中心点
懒得打字了,摘一段总结,但是我也是这么用和想的。“ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方...原创 2018-11-27 20:14:30 · 731 阅读 · 0 评论 -
C#.NET里面抽象类和接口有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,...转载 2019-02-27 21:55:38 · 432 阅读 · 0 评论 -
Abstract和Virtual区别
解读一c# 中 Abstract和Virtual比较容易混淆,都与继承有关,并且涉及override的使用。下面讨论一下二者的区别:一、Virtual方法(虚方法)virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况:情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法。情况2:在基类中...转载 2019-05-08 22:57:51 · 2364 阅读 · 1 评论 -
C#访问修饰符
①private,私有访问修饰符,被private访问修饰符修饰的成员只有在当前类的内部可以访问,其他地方一律不得访问。类中成员不用修饰符,默认为private。②protected,表示当前类内部可以访问,并且所有的子类内部也可以访问。③internal,当前程序集内部。类的默认访问修饰符是internal。注:protected和internal访问修饰符无所谓哪个更“可访问”,因...转载 2019-05-19 17:30:47 · 313 阅读 · 0 评论 -
程序集、命名空间和类
作者:ahdung链接:https://www.zhihu.com/question/263468057/answer/269458014来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。你还漏了一个:【程序集】。我先说包含关系吧:程序集|命名空间【包含】类|结构体|接口|枚举|委托。由于类、结构体这些东西在说明这种问题时并没有区别,所以下文可能只拿类...转载 2017-12-14 11:40:41 · 824 阅读 · 0 评论 -
多态之虚方法
1.虚方法用到两个关键字virtual 和 override 当子类继承与父类对象时,声明一个父类对象,通过在子类中重写父类对象的方法,可以直接调到子类的方法 public class Person { private string _name; public string Name { get...原创 2017-12-17 15:55:02 · 378 阅读 · 0 评论 -
C#多态之接口
继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的1.接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类至少要实现哪些功能,继承它的类可以增加自己的方法.2.使用接口可以使继承它的类: 命名统一/规范,易于维护.比如: 两个类 "狗"和"猫",如果它们都继承了接口"动物",其中动物里面有个方法Behavior(...转载 2017-12-18 13:42:13 · 315 阅读 · 0 评论 -
C#近期学习
1、特性具有以下属性:特性向程序添加元数据。 元数据是程序中定义的类型的相关信息。 所有 .NET 程序集都包含一组指定的元数据,用于描述程序集中定义的类型和类型成员。 可以添加自定义特性来指定所需的其他任何信息。 有关详细信息,请参阅创建自定义特性 (C#)。 可以将一个或多个特性应用于整个程序集、模块或较小的程序元素(如类和属性)。 特性可以像方法和属性一样接受自变量。 程序可使用反...原创 2018-06-20 23:43:52 · 230 阅读 · 0 评论 -
XML序列化和反序列化
阅读目录开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命名节点名称 列表和数组的序列化 列表和数组的做为数据成员的序列化 类型继承与反序列化 反序列化的实战演练 反序列化的使用总结 排除不需要序列化的成员 强制指定成员的序列化顺序 自定义序列化行为 序列化去掉XM...转载 2018-07-16 23:42:39 · 2935 阅读 · 0 评论 -
C# 运算符 ?、??、?: 各种问号的用法和说明
1、可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空,例如:string str=null;是正确的。int i=null;编译器将报错。为了使值类型也可为空,可空类型出现了,可空类型使用可空类型修饰符?来表示,表现形式为T?。例:int?表示是可空的整形,DateTime?表示为可空的时间。T?其实是System.Nullable<T>(泛型结...转载 2018-03-23 17:17:35 · 9462 阅读 · 0 评论 -
C#继承List集合
个人感悟:1、继承list集合完美解决了类似键值对之间通过一个参数去查找多个参数的情况,可以通过下表去查找其他数据内容2、继承list集合能够使用list的特性方法,例如可以添加对象,继承之后本身已经就是一个泛型集合...原创 2018-03-23 09:29:03 · 2596 阅读 · 0 评论 -
C# 访问修饰符不一致问题
1、类与类之间的继承 访问修饰符要一致2、方法的访问修饰符需要和方法的参数或者方法的返回值的访问修饰符一致(如果类的访问修饰符也一致,同样没问题) class Animal { public string Name { get; set; } } public class Finsh { public void Sa...原创 2018-02-28 23:33:51 · 283 阅读 · 0 评论 -
C# 访问修饰符(五种)
private 在当前类中使用protected 在当前类和所有继承的子类中使用internal 在当前程序集中的使用protected internal 同时具备protected和internal的访问权限public 公开的访问权限1、类中的成员不写访问修饰符默认为private2、类不写访问修饰符默认为internal3、直接定义在命名空间中的类型访问修饰符只...原创 2018-02-27 22:01:18 · 453 阅读 · 0 评论 -
C# this、base的两种用法
一、代表当前类的实例对象二、调用当前类的构造函数三、base用法 namespace ConsoleApplication1{ class this用法 { person p1 = new person("张三", 20); } class person { public string...原创 2018-02-26 18:01:56 · 365 阅读 · 0 评论 -
C#正则表达式
限定符. 表示除了\n以外的任意字符 a.b* 表示限定前面的表达式出现0次或者多次 a.*b+ 表示一次或者多次,至少出现一次 a.+b? 表示可以出现0次或者1次 a.+b[0-9]{8} 限定固定次数,0到9 之间的任意数出现8次 [0-9]{4, }四次以上 [0-9]{4, 9}四次到九次之间[] 表示罗列出所有单个字符,只能出现一次a[a-z]b| ...原创 2018-01-08 23:04:35 · 233 阅读 · 0 评论 -
C#扩展方法(1)
C#扩展方法的理解“扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。”这是msdn上说的,也就是你可以对String,Int,DataRow,DataTable等这些类型的基础上增加一个或多个方法,使用时不需要去修改或编译类型本身的代码。先做个例子吧,以String为例,需要在字符串类型中加一个从字符串转为数值的功能。以往我们可能是...转载 2017-12-30 12:00:47 · 237 阅读 · 0 评论 -
C#如何理解继承
算是比较能够解惑的回答!要能够强化一下对面向对象的理解(1)继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。(2)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。(3)继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。(4...转载 2019-05-19 17:44:30 · 367 阅读 · 0 评论