当前位置: 代码迷 >> C# >> 小弟我们为之奋斗过的C#C#的一个简单理解
  详细解决方案

小弟我们为之奋斗过的C#C#的一个简单理解

热度:279   发布时间:2016-04-28 08:41:18.0
我们为之奋斗过的C#-----C#的一个简单理解

                               我们首先来简单叙述一下什么是.NET,以及C#的一个简单理解和他们俩的一个区别.

1 .NET概述

.NET是Microsoft.NET的简称,是基于Windows平台的一种技术.它包含了能在.NET Framework平台运行的所有编程语言.

2 C#概述

他是专门为.NET平台设计的一种语言.

3 .NET与C#的区别

.NET是一种平台,这种平台可以编译多种语言例如:VB,J#,而C#只是一种语言.

4 IDE

IDE全称(Itergrated Developer Environment)微软提供的强大集成开发环境.

                     在C#中创建你的第一个C#程序

1怎样在Visual Studio 2012中新建项目

①先在Visual studio 菜单栏中选择”文件”→”新建”→”项目”选项,接着会弹出”新建项目”

②在左侧的项目类型中选择”VisualC#”在右侧的模板列表中选择”控制台应用”选项.强调一下千万别选错了.

③在”名称”中输入想创建的项目名.

④为项目选择一个保存的位置.点击确定按钮,就创建了一个C#代码模块.

             在C#中如何在控制台输出 ,如何让屏幕停留 的方法.                       

1关键代码

在Main()方法中添加以下代码是用来输出和输入的:

Console.WriteLine();//从控制台输出内容;Console.Write();//如果不加Line输出的内容会在同一行显示;Console.ReadLine();//从控制台输入,让屏幕停留;Console.ReadKey();//让屏幕停留;

 

              C#中Main()方法的四种形式

Main()方法的返回值只能是void 或int类型.

Static void Main(string[] args){}Static int Main(string[] args){}Static void Main(){}Static int Main(){}

 

当创建一个新项目时编译器会创建第一个形式的Main()方法.

                     C#中的数据类型

 int 整型;

 float浮点型(一般很少用到,用double代替即可.);

 double 双精度浮点型;

 string 字符串型(在C#中字符串型的关键字是小写的);

 bool 布尔型(在C#中布尔型关键字为bool);

                      C#中的常量

01什么是常量:

常量就是在程序运行过程中保持不变的值. 

02语法:const 数据类型 常量名称=值;

例:const int age=19;(他在后续代码的书写中不能改变他的值.)

              下面给大家介绍一种技术 海量代码折叠技术

快捷键 Ctrl+K+S;

#region (可以提供这段代码用途说明)

  //代码

#endregion

                  占位符的应用

占位符和Java中的+连接符作用是一样,但用占位符比较方便代码的书写;

Eg;

 string name; int age;Console.WriteLine(“请输入姓名:”); name=ConsoleReadLine();Console.WriteLine(“请输入年龄:”); age=int.Prase(ConsoleReadLine());Console.WriteLine(“姓名为:{0};年龄为:{1}.”,name,age);Console.ReadLine();

 

                     C#中的两种命名法的简单介绍

 01.骆驼命名法(Camel):

简单的说就首写字母小写,后续有含义的单词大写(只针对于变量命名);

例:cardName cardNumber;

 02.帕斯卡命名法(Pascal):

 所有单词的首字母都大写(针对于类名和方法名);

 例:InputName SayHellow();

            将接收到得数据转化成int类型这里只讲一种如果想转化成double方法是一样

 

 Console.WriteLine(“请输入一个数字:”);  string num=int.Parse(Console.ReadLine());

 

             C#中的文档注释

 C#中的文档注释和Java是有区别的:

 在Java中文档注释:  /** */

 在C#中文档注释为:///需写在方法上;

 

 /// <summary>  /// 写对这个方法的一个说明,有利于在方法调用的时候知道这个方法是干什么的. /// </summary>  /// <returns>写返回的是什么样的值</returns>

 

             C#中类,对象和方法.

01.什么是类:

具有相同属性和行为的一系列事物的统称.

02.什么是对象:

对象是能在现实生活中找到的某个能区别于其他事物的一个独特个体。

03.类和对象的关系:

类是对象的模板,对象是类的实例.

 

看到这我想大家都觉得非常的枯燥乏味了吧!下面一起来看个关于C#的一个笑话开心开心吧!

这是个面试的笑话:

面试官:熟悉哪些语言?

应聘者:C#

面试官:知道什么叫类吗?

应聘者:我这人实在,工作努力,不知道什么类.

面试官:知道什么是包吗?

应聘者:我这人实在,平常不带包,也不用公司准备了.

面试官:知道什么是接口吗?

应聘者:我这个工作认真,从来不找借口偷懒.

面试官:知道什么是继承吗?

应聘者:我是孤儿没什么可继承的.

面试官:知道什么叫对象吗?

应聘者:知道,我工作努力,上进心强,暂时没有找对象的打算.

面试官:你知道什么是多态吗?

应聘者:知道,我很保守的,我认为让心爱的女人为了自己的一时快乐去堕胎是不到德的行为!请问这和C#有什么关系?

 

 

笑话就看完来大家接着看下面的内容吧!

 

                    C#语法快速热身

1 if结构(和Java中的用法相同)

if(条件表达式){//代码块}

 

 

2 if-else结构(和Java中的用法相同)

if(条件表达式){//代码块1}else{//代码块2}

 

3 多重if结构(和Java中的用法相同)

if(条件表达式1){//代码块1}else if(条件表达式2){//代码块2}else if(表达式3){//代码块3}else{//代码块4}

 

4 嵌套if结构(和Java中的用法相同)

if(条件表达式1){if(条件表达式2){//代码块1}else{//代码块2}}else{//代码块3}

 

5 switch 选择结构

在Java中switch选择结构中的表达式只能是(int/char)

而且选择结构中的break;可有可无.但在C#中switch选择结构中的表达式多了一个string类型;switch结构中每个case块后必须有break;如若不加,编译器会报错,除非在特殊情况下:case块后没有语句;

例如:

case1:case2:break;

 

 

switch(int/char/string表达式){case1://语句break;case1://语句break;default:break;}

 

6 while循环结构(和Java中的用法相同)

While循环是先判断条件表达式是否成立,若条件成立,则执行循环体;否则结束循环.

while(条件表达式){//代码块}

 

7 do-while循环(和Java中的用法相同)

do-while循环先执行一次循环体在判断条件表达式是否成立,若条件成立,则继续循环;否则结束循环.

do{//代码块}while(条件表达式);

 

8 for循环(和Java中的用法相同)

for循环反复执行一段代码,知道满足一定条件为止.

for(表达式1;表达式2;表达式3){//代码块}

 

9 foreach循环()

一般用来遍历整个集合和数组;

foreach(元素类型 元素变量名 in 数组){//代码块}

 

Eg:

int[] num = { 10,20,30,40,50};Console.WriteLine("数组中的数为:");   foreach(int item in num)   {     Console.WriteLine(item);   }    Console.ReadLine();

 

10 C#中的一对数组

 01.例:如何在C#中定义一个长度为4的int类型数组:

  

第一种方式:    int[] age=new int[4]{1,2,3,4};  第二种方式:    int[] age;    age=new int[4]{1,2,3,4};  第三种方式:  int[] age = new int[4] { 1, 2, 3 ,4};  第四种方式:  int[] age={1,2,3,4};

 

02.foreach的局限性:

不能改变数组中个元素的值,如果想改变数个元素的值应使用for循环;

11 二重循环(和Java中的用法相同)

 int i, j; / /循环变量 // 外层循环控制打印的行数for (i = 1; i <= 5; i++){   // 内层循环控制每行打印数字的个数    for (j = 1; j <= i; j++)    {       Console.Write(j);     }   Console.WriteLine();}Console.ReadLine();

 

打印出的图形为:

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

 

12 冒泡排序

流程:每次比较相邻的两个数,较小数的交换到前面,较大的数交换到后面,每轮结束后最大的数总在最后.

例:将一个一个长度为5的int类型数组安升序排列

 int[] num={20,30,10,40,0}

 按冒泡排序的思想分析:

第0轮: {20,30,10,40,0}

  第一次:20<30;不用交换位置.{20,30,10,40,0}

  第二次:30>10;交换位置{20,10,30,40,0}

  第三次:30<40;不交换位置{20,10,30,40,0}

  第四次:40>0;交换位置{20,10,30,0,40}

第1轮: {20,10,30,0,40}

  第一次:20>10;交换位置.{10,20,30,0,40}

  第二次:10<30;不交换位置{10,20,30,0,40}

  第三次:30>0;交换位置{10,20,0,30,40}

第2轮: {10,20,0,30,40}

  第一次:10<20;不交换位置.{10,20,0,30,40}

  第二次:20>0;交换位置{10,0,20,30,40}

第3轮: {10,0,20,30,40}

  第一次:10>0;交换位置.{0,10,20,30,40}

 

     i(多少轮)       j(每轮多少次)

     0              4

     1              3

     2              2

     3              1

      i和j的一个关系:

       i+j=4;

       J=4-i;

 num.Length数组的长度为5因此外层循环结束条件为num.length-1;内层循环结束条件为num.Length-1-i;

        i+j=num.Length-1;

        j=num.Length-1-i;

 解析:外层循环控制多少轮(i)内层循环控制每轮循环多少次(j)

  

for (int i = 0; i <num.Length-1; i++)            {                for (int j = 0; j <num.Length-1-i; j++)                {                    if(num[j]>num[j+1])                    {                        int newnum = num[j];                        num[j] = num[j + 1];                        num[j + 1] = newnum;                    }                }            }

看到这你以成功的掌握了C#的基础知识了请大家务必看完下面的最后一点.

 

 

 

                     使用属性升级MyBank

 

 1 访问修饰符  

  在之前我们学习到一个public(公有的) 访问修饰符它在任何位置都可以访问,它的访问级别最高,用public 修饰的都称为属性.在C#中也有一个访问修饰符private(私有的)它只能在当前类中访问,它的访问级别最低,用private修饰都称为字段.

 2 属性

属性作用:修改和获取私有字段的值(间接对私有字段赋值,起到保护私有字段的作用)

 private string name;

鼠标左键双击name快捷键Ctrl+R+E; 

 

 public string Name        {            get { return name; }            set { name = value; }        }

 

3 this关键字

首先在一个类中定义一个私有字段private string name;然后一个public void StudentName(string name)方法中传入一个string 类型的name变量,如果我在方法体中写这样一行代码:name=name;给name赋值,但是编译器此时会报错,因为编译器此时无法辨别出代码中出现的这两个name 哪个是成员变量,这时需用到this关键字来区分,他指的是当前类的实例(对象)

 

4 向对象三大特性:

01.封装

  可以将私有字段封装成属性,看成是一种封装(属性封装了字段)

  可以将一个方法写到类中这种方式成为封装(类封装了方法)

02.继承

03.多态

5数据安全

    

static void Main(string[] args){      Student stu = new Student();      stu._age = -2;//非法数据      stu. _idCard = "123456"; //身份证号不能被修改}

 

有时候将类中的字段公开是不安全的,但是如果设为私有成员:

无法正常赋值,无法获得数据。

使用方法解决数据安全问题

1,使用者不可直接操作_age

2,用方法返回_age供读取

3,用方法限制使用者的非法赋值

private int _age;public int 方法1(){    return this._age;}public void 方法2(int 参数){  if(参数<0||参数>100)  {     this._age=18;  }  else  {    this._age=参数;  }}

 

这种写法太麻烦,于是诞生了属性

class Student{        private string name;        public string Name        {            get { return name; }            set { name = value; }        }        }

 

       value相当于方法的参数,字段和属性的数据类型必须一致。

       get用于获取相应字段的值,

       set用于设置字段的值。

       get和set都存在,读写属性只有get时,只读属性。只有set时,只写属性。

       属性的作用:控制私有字段的可访问性,保护内部数据的安全。

       建议:类内部敏感字段使用属性来控制访问

       类的成员:字段、属性和方法

       属性是不能用来存储对数据的,真正的数据是存储在字段中的

   6参数的传递方式

    参数传递有两种方式:值传递和引用类型传递

    注意:值传递不能保留参数的修改,要按引用传递,使用ref通过引用传递参数:定义和调用时,在参数前都要使用ref;在方法调用前:作为参数的变量要声明并赋值 ;

 

谢谢!你们抽出宝贵的时间来看,希望对你们有帮助,如果文章有错误之处请大神们及时给我指正.

5楼codexman
感谢总结
4楼骨头哥
写的很棒 支持博主
Re: 泪洒星辰
@骨头哥,谢谢你的支持!
3楼步步为莹
总结的不错,特别是冒泡排序
2楼獨懂妳的特别%
个人觉得知识不再于仅仅能读懂,更在于对文本知识的细致入微观察的总结,感觉楼主异能的点中了我的想法。
1楼天琊蓝
很基础的东西,贵在坚持
Re: 泪洒星辰
@天琊蓝,谢谢!一定一定
  相关解决方案