C#学习 - 类、对象、类成员

类是现实世界事物的模型,是对现实世界事物进行抽象所得到的结果
事物包括物质(实体)和运动(逻辑)
建模是一个只存留需要舍去不需要的过程

类与对象的关系

对象也叫实例,是类经过“实例化”后得到的内存中的实体。可以理解为类是概念,对象是实体
依据类创建一个对象就是“实例化”

使用new操作符创建类的实例

using System.Windows.Forms;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            (new Form()/*new将Form实例化*/).ShowDialog();//ShowDialog将窗口显示出来,不需要显示时可以只写 new Form();
        }
    }
}

Form是表单,实例化后就是一个窗口,Form后面的括号代表初始化“表单”的方式

引用变量与实例的关系

引用变量可以让我们多次访问同一实例
类似于C语言的创造一个变量

using System.Windows.Forms;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Form hw;//hw就是引用变量
            hw = new Form();
            hw.Text = "Hello World";
            hw.ShowDialog();
        }
    }
}

实例不一定对应有引用变量;引用变量不一定引用了实例;

using System.Windows.Forms;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Form a;
            Form b;
            a = new Form();
            b = a;
            a.Text = "A";
            b.Text = "B";
            a.ShowDialog();
        }
    }
}

多个引用变量可以对应一个实例。上段代码中两个引用变量都在引用实例,但都对应的同一个实例,所以编译出来的窗口名字是“B”

类的三大成员

属性(Properties)

存储数据,组合起来表示类或对象当前的状态
模型类或对象重在属性,如Entity Framework

方法(Methods)

由C语言的函数进化而来,表示类或对象“能做什么”
工具类或对象重在方法,如Console

事件(Events)

类或对象通知其他类或对象的机制
通知类或对象重在事件,如Timer
事件可以方便编程,需要善用事件机制,否则容易让程序难以维护、或者出Bug

类的这三大成员可以在MSDN文档中查看
MSDN文档中有Remarks来详细描述类
MSDN文档需要在VS Installer - 单个组件中下载Helpviewer

例子

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            double a = Math.Sqrt(8);
            Console.WriteLine(a);
        }
    }
}

上段代码就是创建一个变量a,a是8的开方,再打印a

using System;
using System.Windows;
using System.Windows.Threading;

namespace WpfApp1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromSeconds(1);
            timer.Tick += Timer_Tick;
            timer.Start();
        }
        private void Timer_Tick(object sender, EventArgs e)
        {
            this.TextBox.Text = DateTime.Now.ToString();
        }
    }
}

上段代码是创建一个桌面时钟,1s更新一次

静态成员与实例成员

静态(static)成员是属于某个类,静态成员是类与生俱来的,只要创建类就有了静态成员。比如全人类(类)和 人的总量(静态成员)
实例(非静态)成员是属于某个对象。比如一个人(对象)和 他的身高(实例成员),这个实例成员转化到静态成员就是 全人类(类)和 平均身高(静态成员)

using System.Windows.Forms;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Form form = new Form();
            form.Text/*实例成员*/ = "Hello World";
            form.ShowDialog();
        }
    }
}

MSDN文档中红色标注就是指的是静态成员

Binding

Binding指的是编译器把一个成员与类或对象关联起来的方法,类似C语言创建结构体后使用成员的方法,Binding操作符“.”——成员访问操作符

你可能感兴趣的:(C#学习,c#,学习,开发语言)