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 ...
随机推荐
- iOS开发系列--通知与消息机制
概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地 ...
- ASP.NET Identity入门系列教程(一) 初识Identity
摘要 通过本文你将了解ASP.NET身份验证机制,表单认证的基本流程,ASP.NET Membership的一些弊端以及ASP.NET Identity的主要优势. 目录 身份验证(Authentic ...
- ABP框架 - 动态Web Api层
文档目录 本节内容: 创建动态Web Api控制器 ForAll 方法 重写 ForAll ForMethods Http 动词 WithVerb 方法 HTTP 特性 命名约定 Api 浏览器 Re ...
- SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,合计,小计
表结构: CREATE TABLE [dbo].[Students]( ,) NOT NULL, ) NULL, [Sex] [int] NOT NULL, ) NULL, ) NULL, , ) N ...
- Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结
Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结 1.1. 边缘检测的基本方法Canny最常用了1 1.2. 编写matlab边缘检测代码, ...
- ZooKeeper安装与配置
一. 单机安装.配置: 1. 下载zookeeper二进制安装包下载地址:http://apache.dataguru.cn/zookeeper/zookeeper-3.4.3/zookeeper-3 ...
- 更改默认alert框体
更改框体主要用到的是更改系统的内置控件winpop下面是winpop具体代码 (function(window, jQuery, undefined) { 2 3 var HTMLS = { 4 ov ...
- SQL Server-分页方式、ISNULL与COALESCE性能分析(八)
前言 上一节我们讲解了数据类型以及字符串中几个需要注意的地方,这节我们继续讲讲字符串行数同时也讲其他内容和穿插的内容,简短的内容,深入的讲解,Always to review the basics. ...
- ubuntu14.04安装及web环境的搭建
在进行接下来的工作之前首先得准备一个Ubuntu的启动U盘以及腾出一个至少50G的系统盘(在网上看到有人用20G的,不知道效果怎么样).关于Ubuntu启动U盘大家可以参考这个帖子 http://ti ...
- 为什么基于Windows Server 2008 R2的网络负载均衡(NLB)配置的时候总会报错“主机不可访问”?
配置基于Windows的网络负载均衡是很容易的,操作也很简单,点点鼠标基本上就能完成,但是在进行节点(真实服务器)操作的过程中有时候会遇到一些主机不可访问的报错信息.这个又是为什么呢? Figure ...