频道栏目
首页 > 资讯 > C# > 正文

C#学习

16-07-18        来源:[db:作者]  
收藏   我要投稿

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[3];
char[] a = new char[] {'a', 'b', 'c'};
char[] a = {'a', 'b', 'c'};
//二维数组,看作是数组的数组
int[,] arr = new int[2,3]; //包含2个一维数组,每个一维数组包含3个变量,总共2*3=6个数组元素


foreach
foreach循环可以不依赖索引而读取每一个数组元素,有迭代的意思

int[] num = {1, 2, 3};
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
{
  /// 
  /// 小朋友
  /// 
  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>3 && value<7)
_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、值类型和引用类型
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 = 2;
        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 = 2;
        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 - 1;
        nextyear = Age + 1;
    }
}            


5-7 课程总结
  封装
  类和对象
  把字段封装成属性
  方法
  构造方法
  值类型和引用类型

相关TAG标签
上一篇:将DataSet转换成json - 576
下一篇:【备战面试之】五、谈扩展方法的理解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站