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#学习的更多相关文章

  1. C++的vector学习abc

    开始学习和使用vector了,用到之后再去学似乎神迹的感觉啊,就像跑一下就能给个糖吃哈哈 百度上的六种初始化的方法就不再说了,那些方法都很对. 如果没有值初始化,系统会自行初始化,目前我遇到的是用脚标 ...

  2. c++ <vector>学习

    https://www.cnblogs.com/mr-wid/archive/2013/01/22/2871105.html 具体参考上面博客,很详细,也是看他的.今天c++学习200%,项目开发0% ...

  3. vector学习

    #include <iostream> #include <vector> #include <string.h> #include <algorithm&g ...

  4. C++ STL Vector学习 (待续)

    头文件:<vector> 初始化 vector<Elementtype> vec(); /*Elementtype是数据类型,10代表长单为10*/ vector<Ele ...

  5. STL vector用法

    基本操作 1.构造函数 vector():创建一个空vector vector(int nSize):创建一个vector,元素个数为nSize vector(int nSize,const t&am ...

  6. 手把手教你做个人 app

    我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示:另外,开发一个app,还需要美工协助切图.没了接口,没了美工,app似乎只能做成单机版或工具类app,真的是这样的吗?先 ...

  7. set和multiset的用法

    set #include<iostream> #include<algorithm> #include<cstdio> #include<string.h&g ...

  8. 【CV论文阅读】Rank Pooling for Action Recognition

    这是期刊论文的版本,不是会议论文的版本.看了论文之后,只能说,太TM聪明了.膜拜~~ 视频的表示方法有很多,一般是把它看作帧的序列.论文提出一种新的方法去表示视频,用ranking function的 ...

  9. 学习RaphaelJS矢量图形包--Learning Raphael JS Vector Graphics中文翻译(一)

    (原文地址:http://www.cnblogs.com/idealer3d/p/LearningRaphaelJSVectorGraphics.html) 前面3篇博文里面,我们讲解了一本叫做< ...

  10. c++中vector的学习

    根据各种做题,发现数组并不是很适用于各种情况,当涉及到内存占用的时候,数组可能就没有vector的优势了,而vector,动态数组,比较适合某些情况. 接下来看看比较基本的vector用法: 1 #i ...

随机推荐

  1. TODO:数据库优化之分页

    TODO:数据库优化之分页 本文的例子是以MongoDB数据库为准,其它数据库各位也可以举一反三进行优化. 在MongoDB中分页使用 a.skip(n)跳过前n个匹配的文档: b.limit(m)返 ...

  2. tomcat RMI 停不掉

    项目采用jfinal框架,做了一个RMI的服务,对其它程序提供服务.实现上,写了一个RmiPlugin package com.wisdombud.cloudtalk.plugin; import j ...

  3. 大数据之Oozie——源码分析(一)程序入口

    工作中发现在oozie中使用sqoop与在shell中直接调度sqoop性能上有很大的差异.为了更深入的探索其中的缘由,开始了oozie的源码分析之路.今天第一天阅读源码,由于没有编译成功,不能运行测 ...

  4. [原创]关于mybatis中一级缓存和二级缓存的简单介绍

    关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...

  5. 扎克伯格开发的家用AI: Jarvis

    扎克伯格本周二在facebook发布了一篇文章,介绍自己利用个人时间开发的一套在自己家里使用的AI系统,并将它命名为Jarvis,对!就是电影钢铁侠里的AI助手Jarvis. 文章并没有讲细节的技术c ...

  6. jQuery:实现两个<select>控件的互移操作

    一.直接上代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...

  7. 编写高质量代码:改善Java程序的151个建议(第4章:字符串___建议56~59)

    建议56:自由选择字符串拼接方法 对一个字符串拼接有三种方法:加号.concat方法及StringBuilder(或StringBuffer ,由于StringBuffer的方法与StringBuil ...

  8. 提升用户体验的最佳免费 jQuery 表单插件

    网页表单是一个老生常谈的话题.出于这样或那样的目的,一些示例中都会包括用户注册,电子商务结算,用户设置甚至联系人表格.而输入栏是非常容易用现代的CSS3技术来应用样式.但是到底什么决定整体用户体验? ...

  9. Google地图开发总结

    我们经常使用地图查位置.看公交.看街景,同时地图还开放第三方的API给开发者.利用这些API进行地图的个性化的展示和控制,例如北京被水淹了,开发一个网页显示北京被淹的地图,地图上面标志被水淹的位置.严 ...

  10. IL实现简单的IOC容器

    既然了解了IL的接口和动态类之间的知识,何不使用进来项目实验一下呢?而第一反应就是想到了平时经常说的IOC容器,在园子里搜索了一下也有这类型的文章http://www.cnblogs.com/kkll ...