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. Leetcode 笔记 36 - Sudoku Solver

    题目链接:Sudoku Solver | LeetCode OJ Write a program to solve a Sudoku puzzle by filling the empty cells ...

  2. LeetCode-1TwoSum(C#)

    # 题目 1. Two Sum Given an array of integers, return indices of the two numbers such that they add up ...

  3. Linux下常见的IO模型

    前言 阻塞IO(blocking IO) 非阻塞IO(nonblocking IO) IO复用(IO multiplexing) 异步IO(asynchronous IO (the POSIX aio ...

  4. 搭建LNAMP环境(七)- PHP7源码安装Memcached和Memcache拓展

    上一篇:搭建LNAMP环境(六)- PHP7源码安装MongoDB和MongoDB拓展 一.安装Memcached 1.yum安装libevent事件触发管理器 yum -y install libe ...

  5. 游戏服务器菜鸟之C#初探三游戏服务

    在经过上述2番折腾之后,最后决定使用TCP进行通信,所以在一次进行重构 主要重构的要点 1.将过来的HTPP请求,重构为TCP请求: 2.使用组件FluenScheduler进行怪物的定时刷新,和定时 ...

  6. C# 给Word文档添加内容控件

    C# 给Word文档添加内容控件 在MS Word中,我们可以通过内容控件来向word文档中插入预先定义好的模块,指定模块的内容格式(如图片.日期.列表或格式化的文本等),从而创建一个结构化的word ...

  7. YYModel 源码解读(一)之YYModel.h

    #if __has_include(<YYModel/YYModel.h>) FOUNDATION_EXPORT double YYModelVersionNumber; FOUNDATI ...

  8. u-boot源码汇编段简要分析

    Hi,大家好!我是CrazyCatJack,你们可以叫我CCJ或者疯猫.今天我给大家带来的是u-boot的源代码汇编段分析,以后还会给大家讲解后续的C代码,请持续关注哦^_^ 先简单说一下u-boot ...

  9. 【那些年关于java多态应用】

    1.多态:具有表现多种形态的能力的特征 父类: public abstract class Animal { public abstract void Say();} 子类: public class ...

  10. 文本框focus之后高亮背景颜色

    看效果:Html: CSS: jQuery: 或者使用连写法: