C#的学习历程

C#的学习历程

C#的世界

1.NET Framework包括公共语言运行库,和.NET Framework类库

NET Framework会将C#程序编译成MSIL中间语言。它产生的汇编程序是可执行文件。

2.标准数值格式化字符

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _2018_05_04_AM_1520_格式化数字字符串
{
    class Program
    {
        static void Main(string[] args)
        {
            /*
             * 格式化数字字符串
             * 格式说明符的语法由3个字段组成:索引号、对齐说明符、格式字段(format field)
             * 格式:{ index , alignment :format } 
             *  index 为索引,是必需要填写的,表示是哪一个需要进行格式化;
             *  alignment 为对齐说明符,由自己决定是否需要填写;是一个整数,其中正整数表示的是字段右对齐,负整数表示的是左对齐,填写的数字表示的是长度(宽度);
             *  format 为格式字段,来指定由index选择的数字的表现形式;需注意冒号后面紧跟格式说明符,中间不能由空格。
             *   格式说明符 是一个字母字符;精度说明符 是可以选择是否需要,由1~2位数字组成。
             * 具体请看下面的例子
             */
            double first = 1234.56789;
            double second = -12.3456789;
            /*
             * 标准数字格式说明符
             */
            Console.WriteLine("格式说明符:");
            Console.WriteLine("货币C、c(不区分大小写) |{0, 15 :C}|{1, -15 :c3}|", first, second);
            /* 
             * 把值格式化为货币,货币符号取决与程序所在的PC的区域自动设置
             * 精度说明符 设置的是小数位的位数;如果不设置 精度说明符 那么会自动取2位小数。
             */
            Console.WriteLine("十进制D、d(不区分大小写) |{0, 15 :D}|{1, -15 :d4}|", 107, -29);
            /*
             * 十进制数字字符串,需要注意,只能和整数类型配合使用;如果是其他类型会报错,提示格式说明符无效
             * 精度说明符 设置的是整个字符串的位数;如果实际数字位数小于给出的精度说明位数,则在左边补0。
             */
            Console.WriteLine("定点F、f(不区分大小写) |{0, 15 :F}|{1, -15 :f3}|", first, second);
            /*
             * 带有小数的十进制数字字符串
             * 精度说明符 设置的是小数位的位数;如果不设置 精度说明符 那么会自动取2位小数。
             */
            Console.WriteLine("常规G、g(不区分大小写) |{0, 15 :G}|{1, -15 :g4}|", first, second);
            /*
             * 在没有说明符的情况下,会根据值转换为定点或科学记数法表示的紧凑形式
             * 精度说明符 设置的是整个字符串的位数;如果实际数字位数小于给出的精度说明位数,并不会进行任何补0操作;不设置,则按原样显示
             */
            Console.WriteLine("十六进制X、x(区分大小写) |{0, 15 :x5}|{1, -15 :X}|", 107, -29);
            /*
             * 十六进制数字的A~F会根据格式说明符的大小写来进行匹配,X 匹配A~F ;x 匹配a~f
             * 精度说明符 设置的是整个字符串的位数;如果实际数字位数小于给出的精度说明位数,则在左边补0。补充:字符串的位数是按转成了十六进制的字符串的位数。
             */
            Console.WriteLine("数字N、n(不区分大小写) |{0, 15 :N}|{0, -15 :n5}|", first, second);
            /*
             * 和定点相似,但在每三个数字的一组中有逗号或空格分隔符,从小数点向左数,取决于程序所在的PC的区域设置
             * 精度说明符 设置的是小数位的位数;如果不设置 精度说明符 那么会自动取2位小数。
             */
            Console.WriteLine("百分比P、p(不区分大小写) |{0, 15 :P}|{1, -15 :p6}|", first, second);
            /*
             * 表示百分比,数字会乘以100
             * 精度说明符 设置的是小数位的位数;如果不设置 精度说明符 那么会自动取2位小数。
            */

            Console.WriteLine("往返过程R、r(不区分大小写)|{0, 15 :R}|{1, -15 :r3}|", first, second);
            /*
             * 保证输出字符串后,如果使用Parse方法将字符串转化成数字,则该值与原始值一样。
             * 精度说明符 设置了也并没有对数据有影响。
             */
            Console.WriteLine("科学记数法E、e(区分大小写)|{0, 15 :E}|{1, -15 :e10}|", first, second);
            /*
             * 具有尾数和指数的科学记数法。指数前加的字母E 是根据说明符的大小写进行匹配的
             * 精度说明符 设置的是小数位的位数。
             */
            Console.ReadKey();
        }
    }
}

结果:
在这里插入图片描述
上述代码参考:https://www.jb51.net/article/140501.htm

3.数组的用法
一维数组的初始化

	 int[] grade = new int[4];
            for (int i = 0; i <= 3; i++)
            {
                grade[i] = i;
            }
            foreach(int item in grade){
                Console.Write("{0},", item);    
            }
            Console.ReadLine();

数组的长度是数组.Length

二维数组的初始化

继承与多态

继承

  • 继承的定义:继承机制是使用现有类派生出新的类所建立的分层式结构。
  1. 基类的生与死都有构造函数与析构函数所掌握,他们都不能被继承。
    继承的方法:
    class Education:School基本就是这样进行继承
    继承的东西为:基类的属性,方法。但是却没有继承基类的构造函数。
  2. This关键字可以引用到对象本身所属类的成员,简单的说,当我们实例化一个类A的对象B时,使用this关键字就是指向对象B,或是与对象有关的成员。

要注意属于静态类的字段,属性或方法是无法使用this关键字的。

3.如果想要使用基类的构造函数,就要使用base关键字

class 派生类:基类
{
	public 构造函数():base()
	{
		//构造函数程序段
	}
}

例如:

class Father{
	public Father(string fatherName){
	}
}
class Son:Father{
	public Son(string sonName):base(sonName){
	}
}

这就是调用基类函数参数的构造函数
注意,不能在静态方法中使用base关键字
3. 隐藏基类成员,包括属性和方法
方法:new public string showTime()

多态

1.方法名相同,传递的参数不同,产生重载
2.覆盖:
注意事项

  • 派生类的方法前面加上override关键字,表示调用自己的方法,而非基类方法。
  • 静态方法不能被覆盖,被覆盖的基类方法须冠上virtual,abstract,override关键字
  • 覆盖的派生类方法需使用与父类相同的派生词。
    public virtual void calcMoney:定义虚拟方法,计算薪资可以让子类覆盖
    public override void calcMoney:覆盖基类方法

接口和抽象类

  1. 定义抽象类
abstract class 类名称{
	public abstract 数据类型 属性名称 {get;set;}	
}

例:

abstract class Staff
{
	private string name;
	public Staff(string staffName)
	{Name = staffName;}
	public abstract void showMessage();//不能加程序块的那种大括号啊!!
}

注意:定义抽象类时不能使用private,protected访问权限修饰词,也不能使用new 运算符来实例化对象,static或sealed这些关键字也不能使用。
2.密封类
Define:不能被继承,简单地说就是无法产生派生类,所以又称为“最终类”。

sealed class Person:Provisonal{
	public sealed override void showMessage(){
		程序段。
	}
}

3.接口

interface IScholl
{
	int subject{get;set;}
	void showMessage();
}

注意:类是可以实现多个接口的。
class Stduent :ISchool,IGrade{}

泛型和集合

集合

  • .NET Framework 通过“System.Collection”命名空间提供了集合类和接口。
  • “索引键/值” 是配对的集合,值存入时可以指定对象类型的索引键,以便于使用索引键来提取相应的值。
    列举IDictiionary的成员
    • Count:获取ICollection项数
    • Items:获取或设置索引键的指定表项
    • Keys:集合中所有表项的索引键
    • Values:集合中所有表项的值

使用下标

  1. ArrayList arrylist = new ArrayList[6];
    相比Array的优点的是可以加入多种数据类型。
  2. Queue
    Queue fruit = new Queue(); fruit.Enqueue(name[i])'
    3.Stack:后进先出

创建泛型

  1. 注意添加System.Collections.Generic
  2. 使用泛型可以大大改进原有的问题,例如传值的时候,传入的是两个不同的数据类型的 数组,除了这点差别,方法其他事没什么差别的。
  3. class 泛型名称<类型变量列表>{}
  4. private T[] items= new T[5];

委托

  • 定义:主要就是把“方法”视为变量来传递。委托是一种类型,代表具有特定参数列表和返回类型的方法引用。
  1. 委托类型派生自 Ddlegate类,委托类是密封的,不能作为其他类的派生来源。
  2. 例子
public delegate bool Speculation(int numerical);//定义一个委托方法,含有一个变量
Speculation evenPredicate;//声明委托变量
evenPredicate = ewn Speculation(IsEven)//将方法传递
private static List<int> ArrayPercolate(int[] intArray,Speculation special)//这里会将委托对象当做参数进行传递

** 功能**:用委托 ,将方法寄托在委托对象上面,就像上面的IsEven,这个便是一个方法,然后,直接,就可以用对象调用方法,的方式,使用这个方法。

重点整理

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#学习路线图之《C#必须知道的300个问题》扫描版 ============================================================ 基本信息 作者:明日科技 丛书名:C#学习路线图 出版社:清华大学出版社 ISBN:978-7-302-27656-2 出版日期:2012年1月 开本:16开 页码:424页 版次:1-1 定价:¥49.80 所属分类:计算机 > 软件与程序设计 > C# ============================================================ 内容简介 本书以C#基础知识为框架,介绍了各部分知识所对应的常用开发疑难问题,并进行透彻地解析。本书内容包括C#语言及其开发环境、掌握C#语言基础、流程控制语句、字符与字符串、数组和集合、C#面向对象程序设计、异常处理和程序调试、Windows窗体、Windows应用程序常用控件、Windows应用程序高级控件、C#面向对象高级技术、ADO.NET数据访问技术、水晶报表与打印、文件及数据流技术、GDI+绘图、多线程技术、网络编程技术、注册表技术、C#语言新技术和Windows应用程序打包部署。 本书所涉及的疑难问题都是一线开发人员在实际项目中遇到的,书中针对这些问题给出了解决方案,并进行了技术上的解析。读者通过对本书的学习,能够提高实际解决问题的能力。 本书提供了大量的源程序、素材,提供了相关的模块库、案例库、素材库、题库等多种形式的辅助学习资料,还提供迅速及时的微博、QQ、论坛等技术支持。 本书内容详尽,非常适合作为C#开发人员的学习用书和必备参考手册,也适合作为相关培训机构的师生和软件开发人员的参考资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值