C#基本知识零散总结

类的属性:(property)

C#中定义属性使用的语法

  1. public string SomeProperty
  2. {
  3. get
  4. {
  5. return "属性的值";
  6. }
  7. set
  8. {
  9. //设置属性
  10. }
  11. }

get访问器不带参数,且必须返回属性声明的类型。

只读属性:在属性定义中省略set访问器,就可以创建只读属性。

只写属性:在属性定义中省略get访问器,就可以创建只写属性。(此方法不推崇)

构造函数:如果没有提供任何构造函数,编译器会在后台创建一个默认的构造函数。类名和函数名相同。构造函数的重载遵循与其他方法相同的规则。可以为构造函数提供任意多的重载。

静态构造函数:这种构造函数只执行一次。static 类名

静态构造函数没有访问修饰符,不能带任何参数,一个类只能有一个静态构造方法。

C#中的var关键字,表示隐式类型化的变量。

匿名类型:var和new关键字同时使用。

C#中的结构,在许多方面看做是缩小了的类。他们基本上与类相同,更适于把一些数据组合起来的类型。

结构与类的区别:

1、结构是值类型,不是引用类型。

2、结构不支持继承。

3、结构的构造函数的工作方式有一些区别。

4、使用结构可以指定字段如何在内存中布局。

虽然结构是值类型,但常常可以把它当做类来处理。


为结构定义构造函数的方式与类定义构造函数的方式相同,但不允许无参的构造函数。

部分类:关键字partial,允许把类、结构或接口放在多个文件中。一般的用法就是partial关键字放在class、struct、或interface等关键字的前面。

静态类:关键字static,静态类在功能上与使用私有静态构造函数创建的类相同。不能创建静态类的实例。

Object方法:

System.Object方法:

1、toString()是获取对象字符串表示的一种便捷方式。

2、GetHashTable()

3、Equals()

4、Finalize()

5、GetType()

6、MemberwiseClone()


实现继承:表示一个类派生于一个基类型,拥有该基类型的所有成员字段和函数。在实现继承中,派生类型的每个函数采用基类型的实现代码,除非在派生类型的定义中指定重写该函数的实现代码。在需要给现有的类型添加功能,或者许多相关的类型共享一个重要的公共功能时,这种类型的继承是非常有效的。

声明一个类派生于另一个类,用:分割。

class Myclass:BaseClass

接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码。在需要指定该类型具有某些可用的特殊性时,最好使用这用类型的继承。

用逗号分隔基类和接口

C#不支持多重实现继承,但可以派生多个接口。


抽象类和抽象函数

用abstract声明,抽象类不能实例化,抽象函数没有执行代码,必须在费抽象的派生类中重写。如果类型包含抽象函数那该类也是抽象的。

abstract class Building

{  public abstract decimal method()
}

接口:interface

声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。一般情况下,接口中只能包含方法、属性、索引器和事件的声明。

接口不能有构造函数或字段。接口的成员总是公共的

接口可以彼此继承,继承的方式与类相同


Array类:是一个抽象类,不能使用构造函数创建数组。

使用静态方法CreatInstance()创建数组

  1. //使用array创建数组
  2. Array intArray1 = Array.CreateInstance(typeof(int), );
  3. for(int i = ; i < ; i++)
  4. {
  5. intArray1.SetValue(, i);
  6. }
  7. for(int i = ; i < ; i++)
  8. {
  9. Console.WriteLine(intArray1.GetValue(i));
  10. }

2、强制将创建的数组转换成int[]数组

  1. //将自己创建的数组强制转换成声明为int[]数组
  2. int[] intArray2 = (int[])intArray1;

将输入的数添加到数组中使用方法是getValue();

3、复制数组可用方法clone();

Clone()方法会创建一个新的数组,Copy()方法只传送了阶数相同、有足够元素空间的已有数组。

  1. //克隆一个新的新的数组
  2. int[] intArray3 = (int[])intArray1.Clone();

4、排序,sort方法实现了冒泡排序。需要在数组中实现IComparable接口。


Array类实现了IEumerable、ICollection和IList接口,以访问和枚举数组中的元素。


关于运算符

is运算符可以检查对象是否与特定的类型兼容。表示是否为该类型

as运算符用于执行引用类型的显式类型转换。如果要转换的类型与指定的类型兼容,转换就会成功进行。如果不兼容,as运算符就会返回null。

sizeof运算符可以确定堆栈中值类型需要的长度(单位是字节);

typeof运算符返回一个表示特定类型的System.Type对象。


关于数据转换

隐式转换只能从较小的向较大的转换。

显式转换类似以强制转换。


运算符的重载

  1. //定义一个结构,包含成员字段、构造函数、和一个tostring的重写
  2. struct Vector
  3. {
  4. public double x, y, z;//成员字段
  5. public Vector(double x,double y,double z)//构造函数
  6. {
  7. this.x = x;
  8. this.y = y;
  9. this.z = z;
  10. }
  11. public Vector(Vector rhs)//构造函数
  12. {
  13. x = rhs.x;
  14. y = rhs.y;
  15. z = rhs.z;
  16. }
  17. //方法重写
  18. public override string ToString()
  19. {
  20. return "(" + x + "," + y + "," + z + ")";
  21. }
  22. }

提供了两个构造函数,通过传递每个元素的值,或者提供另一个复制其值的Vector,来指定矢量的初始值。第二个构造函数带一个Vector参数,通常称为复制构造函数。

  1. //定义一个结构类型
  2. Vector vect1, vect2, vect3;
  3. vect1 = new Vector(3.0, 3.0, 1.0);
  4. vect2 = new Vector(2.0, -4.0, -4.0);
  5. vect3 = vect2 + vect1;
  6.  
  7. Console.WriteLine("vect1=" + vect1.ToString());
  8. Console.WriteLine("vect2=" + vect2.ToString());
  9. Console.WriteLine("vect3=" + vect3.ToString());

委托:当要把方法传递给其他的方法时,需要使用委托。

定义为:delegate void IntMethodInvoker(int x);


集合List<T>和ArrayList是和数组相当的集合类。

1、集合的初始化器

list<int> intList=new List<int>(){1,2};

List<string> stringList=new List<string>(){"one","two"};

2、添加元素Add()方法

  1. List<int>intList=new List<int>();
  2. intList.Add();
  3. intList.Add();
  4.  
  5. List<string>stringList=new List<string>();
  6. stringList.Add("one");
  7. stringList.Add("two");

AddRange()方法可以一次给集合添加多个元素。

3、插入元素Insert(),在指定位置插入元素

5、删除元素RemoveAt(),删除指定位置的元素

C#基本知识零散总结的更多相关文章

  1. 学习 DDD 之消化知识!

    接触到DDD到现在已经有8个月份了,目前所维护的项目也是基于DDD的思想开发的,从一开始的无从下手,到现在游刃有余,学到不少东西,但是都是一些关键字和零散的知识,同时我也感受到了是因为我对项目越来越熟 ...

  2. 搞明白这八个问题,Linux系统就好学多了

    导读 正在犹豫入坑Linux学习的同学或者已经入坑的同学,经常会问到这样八个问题.今天,这些问题我都会一一解答,希望我的看法能帮助各位同学.常言道“好的开始是成功的一半”,如果你明白了以下八个问题,就 ...

  3. [老老实实学WCF] 第三篇 在IIS中寄存服务

    老老实实学WCF 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我 ...

  4. 搞明白这八个问题,Linux系统就好学多了。

    正在犹豫入坑Linux学习的同学或者已经入坑的同学,经常会问到这样八个问题.今天,这些问题我都会一一解答,希望我的看法能帮助各位同学.常言道“好的开始是成功的一半”,如果你明白了以下八个问题,就能有一 ...

  5. (转) [老老实实学WCF] 第三篇 在IIS中寄存服务

    第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我们对WCF的编程生 ...

  6. 单片机小白应该如何学习stm32的一些实践心得!

    嵌入式搬砖道路上的大三狗一枚,撑死算个初学者吧.才学有限,下面仅仅是本人对STM32学习的一点心得与建议,希望对题主有帮助吧. 心得:本人当初学习STM32的时候有一些跟风的因素,自以为学的芯片越多就 ...

  7. 老老实实学WCF

    老老实实学WCF 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我 ...

  8. 初识WCF3

    http://www.cnblogs.com/xiangchangdong/p/3924030.html 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包 ...

  9. 在IIS中寄存服务

    http://blog.csdn.net/songyefei/article/details/7381595 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型 ...

随机推荐

  1. day4_高效处理文件

    read()将文件内容从磁盘中全部读出,放到内存,再给cpu处理,性能低,如果文件量大,很容易内存溢出或卡死. 高效方式: 方式一:一般不用的,代码行多 f = open('users.txt','r ...

  2. 快速安装elkstack

    一.介绍 The Elastic Stack - 它不是一个软件,而是Elasticsearch,Logstash,Kibana 开源软件的集合,对外是作为一个日志管理系统的开源方案.它可以从任何来源 ...

  3. (4.4)mysql备份还原——备份存储容灾基础知识

    存储知识 1.为什么需要存储,存储一般解决哪些问题? 容量.速度.易于管理.安全(容灾与备份).可扩展性 2.存储发展历史 [2.1]大型机 [2.2]c/s结构(客户端->服务器) [2.3] ...

  4. linux 查看网卡流量:nload

    nload命令用于查看网卡流量,用法如下: [root@mysql test]# yum install -y epel-release [root@mysql test]# yum install ...

  5. C++中的内存区域及其性能特征

    首先须要指出的是.我们通经常使用"堆"和"自由存储"这两个术语来区分两种不同类型的动态分配内存. 1.常量数据:常量数据区域主要用于存储字符串以及其它在编译期就 ...

  6. Python递归优化方法

    递归栈溢出 Python的递归调用栈的深度有限制,默认深度为998,可以通过sys.getrecursionlimit()查看. 针对递归栈溢出,我们可以将默认深度设置为大一些,这样不会报错,但是再大 ...

  7. 【PCA】周志华

    一.书籍

  8. 122A

    Copy #include <stdio.h> int main() { int dig; int flag=0; scanf("%d", &dig); if( ...

  9. 微信小程序实现简单的树形图treeview

    H5有很多树形图(树状图)的组件,echarts也有.比如像bootstrap的treeview,定制性很强.不过这些都无法方便地为小程序所用,除非整个页面用H5搭建再用webview框进去,有点粗暴 ...

  10. [LeetCode] 643. Maximum Average Subarray I_Easy tag: Dynamic Programming(Sliding windows)

    Given an array consisting of n integers, find the contiguous subarray of given length k that has the ...