C#学习
C#开发轻松入门(慕课网)
1、C#简介
1-1 .NET简介
.NET平台可运用多种语言编程,C#配合的最好。
1-2 Visual Studio简介及安装
...
1-6 Hello World
控制台程序:Main方法,程序的入口
Console.Write("Hello World\n"); // Ctrl+F5直接运行
namepalce命名空间--class类(C#程序有一个一个的类组成)
2、C#语法基础
const常量
数组声明:
string[] name = new string[];
char[] a = new char[] {'a', 'b', 'c'};
char[] a = {'a', 'b', 'c'};
//二维数组,看作是数组的数组
int[,] arr = new int[,]; //包含2个一维数组,每个一维数组包含3个变量,总共2*3=6个数组元素
foreach
foreach循环可以不依赖索引而读取每一个数组元素,有迭代的意思
int[] num = {, , };
foreach(int i in num)
{
Console.Write(i);
}
在控制台接收输入:
string name;
name = Console.Readline();
在C#中进行断点跟踪和调试:
F9设置/取消断点
F5进行调试
F10进行单步执行
F11进入方法体
用C#实现封装(慕课网)
1、C#中的类和对象
1-1 类和对象的概念:
面向对象、封装、继承、多态、类、对象、字段(属性)、方法。
实例化
1-2 定义类
在项目处右击添加类
namespace MyFirstApp
{
/// <summary>
/// 小朋友
/// </summary>
class Child
{
public string name;
public int age; public void playBall()
{
Console.Write("我是LBJ");
} }
}
1-3 实例化对象并访问对象成员
Child XiaoMIng = new Child();//实例化对象
XiaoMing.name = "小明";//为字段赋值
XiaoMIng.playBall();//调用方法
1-4 访问修饰符public&private
public(公共的)、private(私有的)
默认为private
2、属性的封装
2-1 封装的概念
为什么要在程序中使用封装--使用封装(隐藏对象的信息、留出访问的接口)
class Child
{
private string _sex;
public string Sex
{
//get、set、value都是关键字
get{return _sex;}//读访问器
set{_sex = value;}//写访问器
}
}
2-2 代码实现属性的封装
封装的快捷键:Ctrl+R+E
class Child
{
private string _name;
//使用快捷键Ctrl+R+E实现快速封装
public string Name
{
get { return _name;}
set { _name = value;}
}
}
2-3 只读属性
只有get访问器,用构造方法为字段进行初始化
2-4 通过set块约束属性赋值
private int _age; public int Age
{
get { return _age; }
set
{ //约束属性赋值
if(value> && value<)
_age = value;
}
}
3、方法
3-1 定义并调用无参方法
。。。
3-2 定义并调用带参方法
形参实参
public void EatSuge(string suger)
{
if(suger == "榴莲糖")
//输出
else
//输出
}
3-3 方法的重载(通过实参类型和参数数量的不同确定)
public void EatSuge(int count)
{ //... }
public void EatSuge(string suger, int count)
{ //... }
3-4 通过return结束方法调用或带回返回值
4、构造方法
4-1 默认构造方法、无参构造方法和有参构造方法
构造方法:在实例化对象时为属性赋初始值
通常声明为public,可重载
无参:
public Child()
{//...}
有参:
public Child(string name, string sex, int age)
{
_name = name;
_sex = sex;
_age = age;
}
4-2 this关键字
this代表当前对象
public Child(string name, string sex, int age)
{
this._name = name;
this._sex = sex;
this._age = age;
}
4-3 对象初始化器
Child child = new Child(){Name = "asf", Age = };
5、值类型和引用类型
5-1 值类型与引用类型
**值类型:int、char、double、bool
//x的值不变,创建了y副本
//值类型变量存储对象的值,赋值会创建值得副本,修改任何副本都不会影响其他副本
int x;
int y=x;
y--;//y变x不变
**引用类型:类(string)、数组、接口
//引用类型存储对象的内存地址
//赋值不会创建值得副本,只会创建地址的副本
//修改任何一个副本,也同时修改其他的副本
Child c1 = new Child();
c1.Name = "张小明";
Child c2 = c1;
c2.Name = "刘小勇";
Console.Write(c1.Name);//输出为刘小勇
Console.Write(c2.Name);//输出为刘小勇
5-2 结构(值类型,也可以有字段、属性和方法)
结构与类的不同:
最根本的区别是结构是值类型,而类是引用类型;
结构的字段不能赋初始值;
结构不能定义无参的构造方法;
结构内的构造方法里必须为所有的字段赋值;
结构定义时不必须实例化;
5-3 枚举(值类型)
举例:用枚举限制sex的赋值
enum Gender
{
男,女
}
特点:
枚举是值类型;
枚举不能定义字段、属性和方法;
枚举值是从0递增的整数。
5-4 方法传参中的值类型和引用类型
值类型与引用类型赋值时不同造成的差异
引用类型,按引用传参,传递的是地址--导致形参改变实参也改变
值类型,按值传参,传递的是值副本--形参改变,实参不变
5-5 ref关键字
//使得值类型的参数可以按照引用传参
class Program
{
static void Main(string[] args)
{
int age = ;
increase(ref age);//传入age的引用,类似于C++的&age
Console.Write(age);
} static void increase(ref int Age)//ref int传入引用,类似于C++的int&
{
Age++;
}
}
5-6 out关键字
返回多个值
举例:
class Program
{
static void Main(string[] args)
{
int ly, ny;//去年的年龄,明年的年龄
int age = ;
lyny(age, out ly, out ny);//返回去年的年龄和明年的年龄
Console.WriteLine(ly+" "+ny);//输出1 3
} static void lyny(int Age, out int lastyear, out int nextyear)//输出去年的年龄和明年的年龄
{
lastyear = Age - ;
nextyear = Age + ;
}
}
5-7 课程总结
封装
类和对象
把字段封装成属性
方法
构造方法
值类型和引用类型
C#学习的更多相关文章
- C++的vector学习abc
开始学习和使用vector了,用到之后再去学似乎神迹的感觉啊,就像跑一下就能给个糖吃哈哈 百度上的六种初始化的方法就不再说了,那些方法都很对. 如果没有值初始化,系统会自行初始化,目前我遇到的是用脚标 ...
- c++ <vector>学习
https://www.cnblogs.com/mr-wid/archive/2013/01/22/2871105.html 具体参考上面博客,很详细,也是看他的.今天c++学习200%,项目开发0% ...
- vector学习
#include <iostream> #include <vector> #include <string.h> #include <algorithm&g ...
- C++ STL Vector学习 (待续)
头文件:<vector> 初始化 vector<Elementtype> vec(); /*Elementtype是数据类型,10代表长单为10*/ vector<Ele ...
- STL vector用法
基本操作 1.构造函数 vector():创建一个空vector vector(int nSize):创建一个vector,元素个数为nSize vector(int nSize,const t&am ...
- 手把手教你做个人 app
我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示:另外,开发一个app,还需要美工协助切图.没了接口,没了美工,app似乎只能做成单机版或工具类app,真的是这样的吗?先 ...
- set和multiset的用法
set #include<iostream> #include<algorithm> #include<cstdio> #include<string.h&g ...
- 【CV论文阅读】Rank Pooling for Action Recognition
这是期刊论文的版本,不是会议论文的版本.看了论文之后,只能说,太TM聪明了.膜拜~~ 视频的表示方法有很多,一般是把它看作帧的序列.论文提出一种新的方法去表示视频,用ranking function的 ...
- 学习RaphaelJS矢量图形包--Learning Raphael JS Vector Graphics中文翻译(一)
(原文地址:http://www.cnblogs.com/idealer3d/p/LearningRaphaelJSVectorGraphics.html) 前面3篇博文里面,我们讲解了一本叫做< ...
- c++中vector的学习
根据各种做题,发现数组并不是很适用于各种情况,当涉及到内存占用的时候,数组可能就没有vector的优势了,而vector,动态数组,比较适合某些情况. 接下来看看比较基本的vector用法: 1 #i ...
随机推荐
- 前端工程师手中的Sublime Text
原文地址:http://css-tricks.com/sublime-text-front-end-developers/ 我的Blog:http://cabbit.me/sublime-text-f ...
- LeetCode-1TwoSum(C#)
# 题目 1. Two Sum Given an array of integers, return indices of the two numbers such that they add up ...
- eclipse内下载及配置maven插件(转)
本文介绍Maven的安装和配置,同样适用于eclipse 1.首先需要安装jdk,eclipse(废话!). 然后到maven官网下载maven,http://maven.apache.org/dow ...
- 自定义tabBar
★★★★自定义tabBar★★★★★★★ Demo下载地址:https://github.com/marlonxlj/tabBarCustom.git 前言: 有的时候需求要对tabBar进行自定义的 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】
系列目录 上次的探讨没有任何结果,我浏览了大量的文章和个别系统的参考!决定用Cache来做,这可能有点难以接受但是配合mvc过滤器来做效果非常好! 由于之前的过滤器我们用过了OnActionExecu ...
- h5engine造轮子
基于学习的造轮子,这是一个最简单,最基础的一个canvas渲染引擎,通过这个引擎架构,可以很快的学习canvas渲染模式! 地址:https://github.com/RichLiu1023/h5en ...
- AngularJS 脏检查深入分析
写在开头 关于Angular脏检查,之前没有仔细学习,只是旁听道说,Angular 会定时的进行周期性数据检查,将前台和后台数据进行比较,所以非常损耗性能. 这是大错而特错的.我甚至在新浪前端面试的时 ...
- ASP.NET(IIS)出现"没有为请求类型"GET"找到 HTTP 处理程序"
pasting 环 境:windows 2003 IIS6.0 程序支持:ASP.NET .NET版本:2.0.4.0 问 题:之前服务器上各大网站运行良好,今天突然出现:" ...
- ios 开发需要看的书籍
1.吴航写的<iOS应用逆向工程 第2版> 2.<iOS 应用安全攻防实战> 3.
- 我看不下去鸟。。。。Java和C#的socket通信真的简单吗?
这几天在博客园上看到好几个写Java和C#的socket通信的帖子.但是都为指出其中关键点. C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己 ...