c#复习3

  1. 值类型和引用类型

值类型:int double char bool decimal struct enum(继承自system.valueType)

引用类型:string 数组 类 接口 委托

值类型存在内存的栈上,引用类型存储在堆中,栈上的效率高于堆
值传递:把值作为参数传递,把值本身进行传递。ref可以把值传递变为引用传递

引用传递:传递的是引用。

 1    private void button1_Click(object sender, EventArgs e)
 2         {
 3             person p = new person();
 4             p.Name = "张三";
 5             test(p);
 6             MessageBox.Show(p.Name);
 7             //李四
 8         }
 9
10
11
12         void test(person s)
13         {
14             s.Name = "李四";
15             person p2 = new person();
16             p2.Name = "王五";
17             s = p2;
18         }

引用传递

2.字符串

重要特性:不可变性,对字符串的操作都会在内存中产生一块新的实例

我们可以将一个字符串看做是 char类型的只读数组。

1  private void button2_Click(object sender, EventArgs e)
2         {
3             string str = "asdfghjk";
4             MessageBox.Show(str[5].ToString());
5         }

char

 3.等号和Equals,以及重写Equals

对于string类型而言,不管是等号还是Equals比较的都是值本身

//Equals默认比较的是地址,但是我们在自己定义的类中如果用到Equals,都会重写

 1  private void button3_Click(object sender, EventArgs e)
 2         {
 3             string s1 = "abc";
 4             string s2 = "abc";
 5             //对于string类型而言,不管是等号还是Equals比较的都是值本身
 6             if (s1 == s2)
 7             {
 8               MessageBox.Show("s1和s2相等");
 9             }
10             else
11             {
12                 MessageBox.Show("s1和s2不相等");
13             }
14
15             if(s1.Equals(s2))
16             {
17                 MessageBox.Show("s1和s2相等");
18             }
19             else
20             {
21                 MessageBox.Show("s1和s2不相等");
22             }
23
24             //Equals默认比较的是地址,但是我们在自己定义的类中如果用到Equals,都会重写
25             person p1=new person(){Name="刘刘"};
26             //类的命名空间
27             MessageBox.Show(p1.ToString());//_1.值传递.person
28
29
30             person p2 = new person() {Name = "刘刘"};
31             if (p1 == p2)
32             {
33                 MessageBox.Show("p1和p2相等");
34             }
35             else
36             {
37                 MessageBox.Show("p1和p2不相等");
38             }
39
40             if (p1.Equals(p2))
41             {
42                 MessageBox.Show("p1和p2相等");
43             }
44             else
45             {
46                 MessageBox.Show("p1和p2不相等");
47             }
48         }
49
50  class person
51     {
52         private string name;
53
54         public string Name
55         {
56             get { return name; }
57             set { name = value; }
58         }
59
60         public override bool Equals(object obj)
61         {
62             person person = obj as person;
63             if(this.Name==person.Name)
64             {
65                 return true;
66             }
67             else
68             {
69                 return false;
70             }
71         }
72         public override string ToString()
73         {
74             return "重写的ToString()";
75         }
76
77     }

4.显示程序的运行时间

 1  private void button4_Click(object sender, EventArgs e)
 2         {
 3             //string str = string.Empty;
 4             //StringBuilder sb = new StringBuilder();
 5             ////显示运行时间
 6             //Stopwatch sp = new Stopwatch();
 7             //sp.Start();
 8             //for(int i=0;i<1000000;i++)
 9             //{
10             //    //str += i;
11             //    sb.Append(i);
12             //}
13             //sp.Stop();
14             //MessageBox.Show(sp.Elapsed.ToString());
15             //StringBuilder sb = new StringBuilder();
16             //sb.Append("gaojinding");
17             //sb.Append("wangwu");
18             //sb.Insert(3, "lisi");
19             //MessageBox.Show(sb.ToString());
20
21         }

时间: 2024-10-09 22:29:09

c#复习3的相关文章

C++基础复习

一. C++与C的比较: C语言是一个结构化语言,它的重点在于算法和数据结构,C语言的设计首先要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到的输出(或实现过程(事物)控制). C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制. 所以C语言和C++的最大区别在于它们解决问题的思想不同,一个面向过程一个面向对象. C++对C的"增强",表现在六个方面: 1.类型检测更为严格. 2.

大量逻辑判断优化的思路——责任链模式复习总结及其和状态模式对比

俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的总结知识点如下: 责任链模式概念和例子 使用的条件 和状态模式的比较分析 责任链的优缺点 纯的责任链和不纯的责任链 javax.servlet.Filter#doFilter()方法源码分析 基于AOP思想,模拟一个拦截器 前面说了一个状态模式,总结过程中发现和这个责任链的使用场景很类似,都是为了解耦大量复杂业务逻辑判断的,那么他们有什么不同呢?回忆状态模式——状态模式允许通过改变对象的内部状态而改变对象自身的行为,这个对象

算法分析与设计复习

算法分析与设计复习 2016年初,研一上学期期末考试前,复习并总结算法分析与设计科目的内容.复习过程参照<算法导论>中文第2版,同时参照PPT,章节划分根据PPT内容 概要: 第一章 概述 第二章 插入排序&分治策略 第三章 复杂度分析 第四章 堆与堆排序 第五章 快速排序 第六章 线性时间排序 第一章 概述 算法的应用范围 算法在诸如生物等诸多领域有其应用 算法的意义 算法在很多情况下让不可能完成的事情变成了可能,让处理的很慢的过程变快. 一个铺垫 一串不全为0的数,怎么取能拿到一段

复习PHP-语言参考-预定义接口

1.Traversable 他是一个遍历接口规范 注意:发现一个有用的函数get_declared_classes,可以以数组形式显示当前脚本下所有已经定义的类名 2.Iterator Iterator迭代器继承自Traversable,是一种遍历对象内容的对象. 你可以自己写一个子类继承自它,并写上具体遍历的方法. Iterator包含:current(返回当前元素),key(当前键),next(下一个元素),rewind(返回至初始元素),valid(检测当前元素是否存在)五种方法. 3.I

underscore 复习 对象函数 篇章

_.partial = function(func) { var boundArgs = slice.call(arguments, 1); var bound = function() { var position = 0, length = boundArgs.length; var args = Array(length); for (var i = 0; i < length; i++) { args[i] = boundArgs[i] === _ ? arguments[positio

数据结构复习之C语言指针与结构体

数据结构指针复习: #include <stdio.h> void main() { int a[5] = {8, 2, 3, 4, 5}; // a[3] == *(3+a) printf("%d\n", *(3+a)); // a[3] 4 printf("*a其实就是a[0]: %d\n", *a); // 8 // 地址是连续的 printf("%p\n", a+1); printf("%p\n", a+2

jsp servlet基础复习 Part1

jsp和servlet的一些基础知识整理,用于备忘. 一.jsp与servlet的基本关系 1.jsp-->web容器-->servlet-->加载进容器的虚拟机执行-->输出执行结果给浏览器端 在这个过程,所有位于<%%>之外的值,都被认为是out.println()中的内容进行直接输出.详细理解看代码 <html> <% //例子说明:servlet和jsp的关系 boolean b = false; if(b){ %> 这里是内容一 <

shell脚本复习

最近公司工作量很小,就复习复习,看起了马哥的视频,感觉马哥讲课讲得特别细.这才是深入到系统的讲解,补充了很多我之前只是了解到皮毛的东西. shell编程:弱类型编程语言 强:变量在使用前,必须事先声明,甚至还需要初始化 NULL: 弱:变量用时声明,甚至不区分类型: 变量赋值:VAR_NAME=VALUE 编译器,解释器 编程语言:机器语言.汇编语言.高级语言 静态语言:编译型语言 强类型(变量) 关键字: 事先转换成可执行格式 C.  C++.JAVA.C# 动态语言:解释型语言 on the

[Java面试一]面试复习大纲.

一.Java基础部分 (搞定所有技术之后才考虑复习的技术点) 1.数组中的排序问题(笔试或者机试,前者可能性更大) 2.面向对象的理解 3.集合相关的问题,比如hashmap跟hashtable的区别.搞清楚每个集合对象的特性就欧了. 4.多线程启动方式,以及产生死锁的原因和解决办法[多线程问题不是很常问,有精力就复习这块内容] 5.IO流,了解常见的几个流对象以及基本的流操作即可,被机试的可能性比较小. 二.Web基础 (1年工作经验者需要重点复习的技术点) 1.http协议(定义.常见的请求

c#复习-2

输入三个学生的信息学号.姓名.分数从大到小排序 1 using System; 2 using System.Collections; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Text; 6 7 namespace 复习CS 8 { 9 class Program 10 { 11 struct Student 12 { 13 public int num; 14 public string C