v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

那些年,我们一起疯狂的C#语言------总结

望大家认真看看哦,有惊喜哦!!!

第一章                   第一个C#程序

大概在2000年,微软推出了一种革命性的产品--.NET

目标:任何人,在任何地方,使用任何终端设备,都可以访问微软提供的服务。

.net Framework:要想让我们自己写的C#应用可以运行在Good Friend的Computer上,必须有.net Framework

IDE(Itergrated Developer Environment)集成开发环境Linux:装XWindow:傻X

解析:,net是一种平台,这种平台上可以跑多种语言,例如,vb,j#,C#c#只是一种语言

第一个C#程序

1. 使用vs创建C#程序的步骤:

新建项目(project)→生成可执行文件(build)→运行(run)

2.解决方案资源管理器:包括解决方案名称、项目名称、编译后的

可执行文件和源文件(以.cs为扩展名)等。

3.程序结构:命名空间中包含类,类中包含Main方法

4.C#的main方法

注意点:Main方法首字母大写

返回值可以为void或者int

命令行参数是可选的

四种Main()方法:

static void Main(){}

static void Main(){string[] args}

static int Main(){}

static int Main(){string[] args}

5.C#中变量

c#中常用数据类型:整型 int,浮点型float,字符串string

布尔型bool

语法:数据类型变量名称;

c#中变量的命名规则有哪些?

1,组成:英文字母、数字、“_”

2,开头:英文字母、“_”

3,不能使用关键字;

6.C#中的常量

什么是常量

变量:可以变化的量。

Int num=5;

Num=7;

常量;一旦定义,其值不能再后续代码中再次修改。

解析:PI

Int num=5;

05.海量代码折叠

快捷键是Ctrl+K+S:#region

const 数据类型常量名称=值;

注意点:常量不能被重新赋值

  1. 常量必须在声明时初始化

常量命名规则:01,有意义02,均大写03,长度宜长

什么时候使用常量:01,多处用到02,其值不易理解03,其值不变

7.输入输出

向控制台输出:

Console.WriteLine()方法--输出后换行

Console.Write()方法--输出后不换行

Console.WriteLine("格式字符串",变量列表);

例如:Console.WriteLine("我的课程名称是:{0}",course);

{0}:占位符

依次使用{0}、{1}、{2}与变量列表中的变量对应

可以在字符中使用\n、\t来控制换行或制表

从控制台读入:

Console.ReadLine();

返回值为string类型

c#中的方法

方法是类的行为,便于修改、增加可读性、可重用、封装等。

C#中方法的定义形式:

访问修饰符返回类型方法名(参数列表)

{

//方法的主体

}

访问修饰符:如public、private等。

返回类型:如int ,double ,string,void等。

方法名:命名规范:单词首字母大写--Pascal命名法

类和对象

类可以生成对象,类是对象的抽象

成员变量也叫字段

c#中的注释

单行注释://

多行注释:/**/

文档注释:/**

*/

C#中的region

如何让自己的海量代码更可读?

region可以使代码折叠

VS中调试技巧

断点:通知调试器应在某点上中段应用程序并暂停执行

监视窗口:计算变量和表达式的值

调试常用快捷键

F5--开始调试

Shift+F5--停止调试

F9--设置或删除断点

F10--逐过程调试

F11--逐语句

第2章           c#语法快速热身

c#javaswitch语句用法有什么不同?

01.java中switch后的表达式取值只能为(int/char),

但是c#中取值可以是(int/char/string)

02.java中case后可以没有break语句,但是在c#则不行

java中如何定义数组?

int[] nums=new int[]{1,2,3};

c#if条件结构

C#与java中的条件判断语句对比

条件判断语句       java        c#

if               if(){...}二者完全相同

if...else...     二者完全相同

注意:java和c#中switch用法有以下两点不同:

01.java中switch后的表达式取值只能为(int/char),

但是c#中取值可以是(int/char/string)

02.java中case后可以没有break语句,但是在c#则不行

多个可以case 可以共用break语句

 c#switch小结

条件判断的表达式类型:整型、字符型或字符串

break语句的要求:

01,每个case都要有break

02,default也要有break

03,特殊情况:case中没有其他语句时,不需要break语句

   c#中的一维数组

01.C#中数组定义语法:

数据类型[] 数组名;

string[] arr1;

02.如何设置数组大小?

使用new设置大小:创建长度为5的整型数组

int[] array=new int[5];

03.数组初始化:

int[ ] arr = new int[5]{0,1,2,3,4};

int[ ] arr = new int[ ]{0,1,2,3,4};   // 省略长度

int[ ] arr = {0,1,2,3,4};                  // 省略new

[5]——方括号中的数字决定数组的长度

{0,1,2,3,4}——大括号中的元素个数决定数组的长度

04.如何获取数组的长度(数组中元素的个数)

答:数组名.Length

05.如何循环输出数组中元素?

// 循环输出数组元素

int[ ] array = new int[5] { 0, 1 ,2, 3, 4};  // 声明并初始化一维数组

考题:

//在C#中和java中如下语句都可以定义一个长度为3的int类型数组

方式一:

int[] arr=new int[]{1,2,3};

方式二:

int[] arr;

arr=new int[]{1,2,3};

//int[] arr=new int[3]{1,2,3;//C#中正确,java中不可以

foreach局限性:当需要改变数组中值的时候会报错

for (int i = 0; i < array.Length;i++ )       // 输出数组中的所有元素

{

Console.WriteLine(array[i]);

}

06.使用foreach循环遍历数组元素

foreach循环一般用于遍历整个集合或数组

语法:foreach (元素类型变量名 in 集合或者数组名)

{

// 语句

}

07.continue和break语句的使用

continue:结束本次循环,继续下一次循环

break:结束当前循环

08.二重循环复习

int i, j;            // 循环变量

// 外层循环控制打印的行数

for (i = 1; i <= 5; i++)

{

// 内层循环控制每行打印数字的个数

for (j = 1; j <= i; j++)

{

Console.Write(j);

}

Console.WriteLine();

}

 冒泡排序

规则:每次比较相邻两数,小的交换到前面,每轮节航速后最大的数交换到最后

用二重循环实现冒泡排序

例如:5(n)个数字存放在一维数组中,如何进行排序

分析:外层循环控制比较多少轮,循环变量i

内层循环控制每轮比较多少次,循环变量j

观察规律,分析i和j的关系,最终得出结论

i=n-1,j=n-1-i

代码框架如下:

for(i=0;i<n-1;i++)

{

for(j=0;j<n-1-i;j++)

{

//比较j和j+1位置的元素

//如果前大后小就交换

}

}

int[] nums = { 10, 5, 8, 9, 50 };

Console.WriteLine("排序前:");

foreach (int item in nums)

{

Console.Write(item+"\t");

}

Console.WriteLine("");

//01.核心排序代码

for (int i = 0; i <4; i++)

{

for (int j = 0; j <4-i; j++)

{

if (nums[j]>nums[j+1])

{

int temp = nums[j];

nums[j] = nums[j + 1];

nums[j + 1] = temp;

}

}

}

Console.WriteLine("排序后:");

foreach (int item in nums)

{

Console.Write(item + "\t");

}

Console.WriteLine("");

Console.ReadKey();

}

}

冒泡排序速记口诀(升序):  N个数字来排队

两两相比小靠前

外层循环N-1

内层循环N-1-i

第三章         使用属性升级MyBank

 访问修饰符

public:在任何位置都可以访问

private:只能在当前类中访问

C#中的访问修饰符

当类的某些敏感字段只希望类内部使用时,可以使用private访问

一个类的字段一旦定义成private,其他类访问不到

c#中的访问修饰符:

public    不受任何限制,访问级别最高

private   只有类的内部可以使用,访问级别最低

public class Panda{

private string brand;

private int age;

public int Age

{

get { return age; }

set { age = value; }

}

public string Brand

{get { return brand; }

set { brand = value; }

}

属性

属性作用:修改和获取私有字段的值(间接对私有字段赋值,起到保护私有字段的作用)

属性语法

public class Person

{

private int age;

public int Age

{

//get get{return age;}

//set set{age=value;}

}}

面向对象三大特性

01.封装

//可以将私有字段封装成属性,看成是一种封装(属性封装了字段)

//可以将一个方法写到类中这种方式成为封装(类封装了方法)

02.继承

03.多态

this关键字的作用

c#中this关键字有什么用?

this代表的是当前类的实例,通过this可以访问当前类的对象的所有

成员变量和方法

public void SetAge(int age)

{

if (age>0&&age<=20)

{

this.age = age;

}

else

{

this.age = 2;

}

}

public int GetAge()

{

return this.age;

}

数据安全

static void Main(string[] args)

{

Student stu = new Student();

stu._age = -2;//非法数据

stu. _idCard = "123456"; //身份证号不能被修改

}

有时候将类中的字段公开是不安全的,但是如果设为私有成员:

无法正常赋值,无法获得数据。

使用方法解决数据安全问题

1,  使用者不可直接操作_age

2,

3,  用方法返回_age供读取

4,  用方法限制使用者的非法赋值

private int _age;

public int 方法1()

{

return this._age;

}

public void 方法2(int 参数)

{

if(参数<0||参数>100)

{

this._age=18;

}

else

{

this._age=参数;

}

}

这种写法太麻烦,于是诞生了属性

class Student

{

private string name;

public string Name

{

get { return name; }

set { name = value; }

}

}

value相当于方法的参数,字段和属性的数据类型必须一致。

get用于获取相应字段的值,

set用于设置字段的值。

get和set都存在,读写属性。只有get时,只读属性。只有set时,只写属性。

属性的作用:控制私有字段的可访问性,保护内部数据的安全。

建议:类内部敏感字段使用属性来控制访问

快速书写属性的方法:用ctrl+R+E

类的成员:字段、属性和方法

属性是不能用来存储对数据的,真正的数据是存储在字段中的。

  参数的传递方式

参数传递有两种方式:值传递和引用类型传递

注意:值传递不能保留参数的修改,要按引用传递,使用ref

通过引用传递参数:

1.       定义和调用时,在参数前都要使用ref

2.       在方法调用前:作为参数的变量要声明并赋值

使用场景:希望保留参数的更改。

我挺辛苦的,

Normal
0
false

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}

那些年,我们一起疯狂的C#的更多相关文章

  1. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  2. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

  3. 【腾讯Bugly干货分享】OCS——史上最疯狂的iOS动态化方案

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/zctwM2Wf8c6_sxT_0yZvXg 导语 在 ...

  4. 你真的会玩SQL吗?Case也疯狂

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  5. 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题

    调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...

  6. 疯狂Java笔记

    第四章: 4.6深入数组 1.栈内存和堆内存 每个方法都会建立自己的内存栈,在这个方法内定义的变量会逐个放入栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁.因此,所有在方法中定义的局部变量 ...

  7. Unity3D游戏开发初探—4.开发一个“疯狂击箱子”游戏

    一.预备知识—对象的”生“与”死“ (1)如何在游戏脚本程序中创建对象而不是一开始就创建好对象?->使用GameObject的静态方法:CreatePrimitive() 以上一篇的博文中的“指 ...

  8. java8--类加载机制与反射(java疯狂讲义3复习笔记)

    本章重点介绍java.lang.reflect包下的接口和类 当程序使用某个类时,如果该类还没有被加载到内存中,那么系统会通过加载,连接,初始化三个步骤来对该类进行初始化. 类的加载时指将类的clas ...

  9. 《疯狂Java讲义》(一) ---- 关于学习Java的反思

    "听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...

随机推荐

  1. 通过bootstrap来学习less

    很早之前就听说过less了,但是一直拖着没去学习.最近抽空看了less,其实语法很简单,看一遍基本就知道怎么用了.平时自己写页面用less的话,感觉是方便了些,但是难道less的好处就只是这样? 刚好 ...

  2. Javascript学习记录——数组去重

    var arr = [1, 2, 3, 5, 5, '45', '45', 4, 1, '1', '2'] for (var i = 0; i < 10000; i++) { arr.push( ...

  3. Oracle 11g系列:约束

    约束是每个数据库必不可少的一部分,约束的目的在于保存数据的完整性.数据完整性是指数据的精确性和可靠性.数据库约束主要包括:主键约束.外键约束.唯一性约束.检查约束和默认值约束. 1.主键约束 主键约束 ...

  4. svn的安装与使用

    Eclipse安装SVN插件 1.下载最新的Eclipse,我的版本是3.7.2 indigo(Eclipse IDE for Java EE Developers)版 如果没有安装的请到这里下载安装 ...

  5. HDU 1007Quoit Design(最近点问题)

    最近点问题:二维平面中有n(n很大)个点,求出距离最近的两个点 思路:因为n的值很大,所以暴力和dp都行不通了吧!分治法就挺好的. 将区间一半一半的分开,直到分成只有一个点或两个点的时候! 对于只有两 ...

  6. Java多线程系列--“JUC集合”09之 LinkedBlockingDeque

    概要 本章介绍JUC包中的LinkedBlockingDeque.内容包括:LinkedBlockingDeque介绍LinkedBlockingDeque原理和数据结构LinkedBlockingD ...

  7. PHP的学习--可变函数

    PHP 支持可变函数的概念.这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它.可变函数可以用来实现包括回调函数,函数表在内的一些用途. 可变函数不能用于例如 ech ...

  8. 轻松自动化---selenium-webdriver(python) (十一)

    本节重点: 控制滚动条到底部 有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助js是来进行操作.一般用到操作滚动条的会两个场景: 注册时的法律条文需要阅读,判断用户 ...

  9. Web 开发人员和设计师必读文章推荐【系列三十】

    <Web 前端开发精华文章推荐>2014年第9期(总第30期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  10. Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列二十】

    <Web 前端开发精华文章推荐>2013年第八期(总第二十期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...