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. 我的公司培训讲义(1):.NET开发规范教程

    这是1年多以前我在公司所做讲座的讲义,现在与园友们分享,欢迎拿去使用.一起讨论.文中有若干思考题,对园友们是小菜一碟.另有设计模式讲义一篇,随后发布.博文上了首页,感谢博客园团队推荐,也感谢所有园友的 ...

  2. ASP.NET MVC 视图(四)

    ASP.NET MVC 视图(四) 前言 上篇对于利用IoC框架对视图的实现进行依赖注入,最后还简单的介绍一下自定义的视图辅助器是怎么定义和使用的,对于Razor语法的细节和辅助器的使用下篇会说讲到, ...

  3. 模拟实现Spring中的注解装配

    本文原创,地址为http://www.cnblogs.com/fengzheng/p/5037359.html 在Spring中,XML文件中的bean配置是实现Spring IOC的核心配置文件,在 ...

  4. 如何通过源生js获取一个元素的具体样式值 /* getCss:获取指定元素的具体样式的属性值 curElement:[dom对象] attr:[string] */

    昨天的博客些的真的是惨不忍睹啊!!!但是我的人生宗旨就是将不要脸的精神进行到底,所以,今天我又来了.哈哈哈哈哈! 方法一:元素.style.属性名:(这个有局限性--只能获取行内样式的值,对于样式表或 ...

  5. SpringMVC+MyBatis整合——事务管理

    项目一直没有做事务管理,这几天一直在想着解决这事,今天早上终于解决了.接下来直接上配置步骤. 我们项目采用的基本搭建环境:SpringMVC.MyBatis.Oracle11g.WebLogic10. ...

  6. ASP.NET Core 1.1 Preview 1 简介(包含.NETCore 1.1升级公告)

    ASP.NET Core 1.1 Preview 1于2016年10月25日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强. 要将现有项目更新到ASP.NET Core 1.1 Pre ...

  7. AngularJS之指令

    紧接上篇博客“初探AngularJS” 一.前言 在AngularJS中指令尤为重要且内容庞多,固单独提炼出来,梳理一番.如有错误,请不吝讲解. 好了,言归正传,让我们一起走进Angular指令的世界 ...

  8. 【原创】记一次Project插件开发

    一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...

  9. CE修改器修改DNF 测试视频 阿修罗提升智力增加攻击力

    使用CE修改器来修改网络游戏,如DNF 测试视频: CE修改器:指的是Cheat Engine,字面上的意思指的是作弊引擎的意思,是一款内存修改编辑工具.通过修改游戏的内存数据来得到一些原本无法实现的 ...

  10. Unicode转义(\uXXXX)的编码和解码

    在涉及Web前端开发时, 有时会遇到\uXXXX格式表示的字符, 其中XXXX是16进制数字的字符串表示形式, 在js中这个叫Unicode转义字符, 和\n \r同属于转义字符. 在其他语言中也有类 ...