1、HTML

超文本标记语言。
在HTML中存在大量的标签,用HTML提供的标签,将要显示在网页中的内容包含起来,就构成了我们的网页。

css:控制网页内容显示的效果

HTML+CSS=静态网页

HTML不区分大小写。

  1. 新建一个文本文件
  2. 将文件后缀修改为 .html或者.htm
  3. 开始写最基本的框架标签

HTML基本结构:
段落标签:

空格标签: 
标题标签:<h#>:#=1
图片标签:
注释标签:

<html>
    <head>
        <title></title>
    </head>
    <body>
    </body>
</html>

2、单例模式

  1. 将构造函数私有化
  2. 提供一个静态方法,返回对象
  3. 创建一个单例
    子窗体
        public static SystemConfig Frmsc = null;//创建一个静态对象(需要在静态函数中访问),全局唯一的单例
        private SystemConfig()//构造函数私有化
        {
            InitializeComponent();
        }

        public static SystemConfig GetInterance()
        {
            //判断Frmsc是否为NULL,否的话创建一个对象,是的话说明已经创建对象了,直接返回已经创建的
            //同时判断窗体资源是否被释放,如果打开后关闭窗体资源被释放,再次打开则会报错,需要加上资源是否被释放的判断
            if (Frmsc == null || Frmsc.IsDisposed)
            {
                Frmsc = new SystemConfig();
            }
            return Frmsc;
        }

父窗体调用

            SystemConfig Frmsys = SystemConfig.GetInterance();
            Frmsys.Show();

3、XML可扩展的标记语言

XML:储存数据
XML是严格区分大小写的,XML标签也是成对出现的。
XML有且只有一个根节点。

节点:
元素:

4、委托

A、为什么使用委托

将一个方法作为参数,传给另一个方法。此时这个参数的类型就是委托类型。

B、委托概念

委托所指向的函数必须跟委托具有相同的签名(签名也就是参数和返回值)

namespace _05_委托
{
    //声明一个委托,指向一个函数
    public delegate void DelSayHi(string name);


    class Program
    {
        static void Main(string[] args)
        {

            //DelSayHi del = new DelSayHi(SayHiEnglish);
            //或者下面的代码也可以
            DelSayHi del = SayHiEnglish;
            Test("张三", del);
            Console.ReadKey();
        }

        public static void Test(string name, DelSayHi del)
        {
            //调用del
            del(name);
        }

        public static void SayHiChinese(string name)
        {
            Console.WriteLine("吃了吗?"+name);
        }

        public static void SayHiEnglish(string name)
        {
            Console.WriteLine("Nice to meet you!"+name);
        }
    }
C、匿名函数
D、练习:使用委托求最大值
E、练习:使用委托求任意数组的最大值
F、泛型委托
G、多播委托
H、lamda表达式
J、使用委托实现窗体传值

5、窗体直接传递参数

通过公共变量声明,声明在父窗体中的变量,直接使用静态变量,然后用类名引用就可以了。
通过在子窗体中声明公共变量,不需要必须是静态的,使用对象名引用即可。

6、StringBuilder

在程序开发过程中,我们常常碰到字符串连接的情况,方便和直接的方式是通过”+”符号来实现,但是这种方式达到目的的效率比较低,且每执行一次都会创建一个String对象,即耗时,又浪费空间。使用StringBuilder类就可以避免这种问题的发生,下面就Stringbuilder的使用做个简要的总结:

1:StringBuilder.Append()

将内容追加到当前StringBuilder字符串的结尾。

public static void Main(string[] args)
{ 
  StringBuilder Mysb = new StringBuilder("abc:");  
  Mysb.Append(" bcd");  
  Console.WriteLine(Mysb); // 输出: abc:def
  Console.Read();
}
2.StringBuilder.AppendFormat()。

用一个带格式文本来代替字符串要传递的符号

static void Main(string[] args)
    {
      int Mysb1 = 100;
      StringBuilder Mysb2 = new StringBuilder("你欠我:");
      Mysb2.AppendFormat("{0:C}", Mysb1);
      Console.WriteLine(Mysb2); // 输出:  你欠我:¥100
      Console.Read();
    }
3.StringBuilder.Insert(int,string)。

将字符串和对象插入到当前StringBuilder字符串的指定位置。使用此方法将一个单词插入到 StringBuilder 的第六个位置。

static void Main(string[] args)
    {
      StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
      MyStringBuilder.Insert(6, "插入");
      Console.WriteLine(MyStringBuilder); //输出为: Hello 插入World!
      Console.Read();
}
4.StringBuilder.Remove(p,n)。

在当前StringBuilder对象中移除指定的字符,就是说从p位置开始删除n个字符

static void Main(string[] args)
    {
      StringBuilder Mysb = new StringBuilder("Hello World!");
      Mysb.Remove(2,2);
      Console.WriteLine(MyStringBuilder); //输出为:heo world
      Console.Read();
}

5.StringBuilder.Replace(a,b)。

就是用b替换a指定字符串,a和b都是字符或字符串。

static void Main(string[] args)
    {
      string a = "aaa.Baidu.com";
      string b = a.Replace('a','w');
      Console.WriteLine(b);   // 输出:www.Baidu.com
}

实际上,当我们创建 StringBuilder 对象的时候,.NET 运行库会为当前的对象在内存中分配一块缓存区域,用以对字符串操作的预留空间。在使用 StringBuilder 类的时候,最好将容量设置为字符串可能的最大长度,确保 StringBuilder 不需要重复分配内存。如果字符的容量超过设置的最大容量,.NET 运行库将自动分配内存并翻倍。

对于我们 .NET 程序员而言,StringBuilder 与 String 的不同之处就在于,StringBuilder 可以显示的设置分配内存的大小,而 String 只能根据你初始化时的字符串的大小由系统分配足够的内存。