那些年,我们一起疯狂的C#
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 数据类型常量名称=值;
注意点:常量不能被重新赋值
- 常量必须在声明时初始化
常量命名规则: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#与java的switch语句用法有什么不同?
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#的更多相关文章
- 【疯狂造轮子-iOS】JSON转Model系列之二
[疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...
- 【疯狂造轮子-iOS】JSON转Model系列之一
[疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...
- 【腾讯Bugly干货分享】OCS——史上最疯狂的iOS动态化方案
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/zctwM2Wf8c6_sxT_0yZvXg 导语 在 ...
- 你真的会玩SQL吗?Case也疯狂
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题
调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...
- 疯狂Java笔记
第四章: 4.6深入数组 1.栈内存和堆内存 每个方法都会建立自己的内存栈,在这个方法内定义的变量会逐个放入栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁.因此,所有在方法中定义的局部变量 ...
- Unity3D游戏开发初探—4.开发一个“疯狂击箱子”游戏
一.预备知识—对象的”生“与”死“ (1)如何在游戏脚本程序中创建对象而不是一开始就创建好对象?->使用GameObject的静态方法:CreatePrimitive() 以上一篇的博文中的“指 ...
- java8--类加载机制与反射(java疯狂讲义3复习笔记)
本章重点介绍java.lang.reflect包下的接口和类 当程序使用某个类时,如果该类还没有被加载到内存中,那么系统会通过加载,连接,初始化三个步骤来对该类进行初始化. 类的加载时指将类的clas ...
- 《疯狂Java讲义》(一) ---- 关于学习Java的反思
"听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...
随机推荐
- Leetcode 35 Search Insert Position 二分查找(二分下标)
基础题之一,是混迹于各种难题的基础,有时会在小公司的大题见到,但更多的是见于选择题... 题意:在一个有序数列中,要插入数target,找出插入的位置. 楼主在这里更新了<二分查找综述>第 ...
- 技术往事:改变世界的TCP/IP协议(珍贵多图、手机慎点)
1.前言 作为应用层开发人员,接触最多的网络协议通常都是传输层的TCP(与之同处一层的另一个重要协议是UDP协议),但对于IP协议,对于应用程序员来说更多的印象还是IP地址这个东西,再往深一点也就很难 ...
- SSIS的CheckPoint用法
在SSIS的Package Property中有CheckPoints的属性目录,CheckPoint是SSIS的Failover Feature.通过简单的配置CheckPoint,能够在Packa ...
- Nodejs中的this
以下内容都是关于在nodejs中的this而非javascript中的this,nodejs中的this和在浏览器中javascript中的this是不一样的. 在全局中的this console.l ...
- Web前端优化最佳实践及工具集锦
Web前端优化最佳实践及工具集锦 发表于2013-09-23 19:47| 21315次阅读| 来源Googe & Yahoo| 118 条评论| 作者王果 编译 Web优化Google雅虎P ...
- C++程序员们,快来写最简洁的单例模式吧
想必每一位程序员都对设计模式中的单例模式非常的熟悉吧,以往我们用C++实现一个单例模式需要写以下代码: class CSingleton { private: CSingleton() //构造函数是 ...
- Angular从0到1:function(上)
1.前言 Angular作为最流行的前端MV*框架,在WEB开发中占据了重要的地位.接下来,我们就一步一步从官方api结合实践过程,来学习一下这个强大的框架吧. Note:每个function描述标题 ...
- Windows Azure Cloud Service (44) 将Cloud Service加入Virtual Network Subnet,并固定Virtual IP Address(VIP)
<Windows Azure Platform 系列文章目录> 在之前的文章中,笔者已经详细介绍了如何将Virtual Machine加入Virtual Network,并且绑定固定的Pr ...
- JS魔法堂:jQuery.Deferred(jQuery1.5-2.1)源码剖析
一.前言 jQuery.Deferred作为1.5的新特性出现在jQuery上,而jQuery.ajax函数也做了相应的调整.因此我们能如下的使用xhr请求调用,并实现事件处理函数晚绑定. var p ...
- Hive SQL 监控系统 - Hive Falcon
1.概述 在开发工作当中,提交 Hadoop 任务,任务的运行详情,这是我们所关心的,当业务并不复杂的时候,我们可以使用 Hadoop 提供的命令工具去管理 YARN 中的任务.在编写 Hive SQ ...