[C#] 一.、C#程序创建与简单介绍

 文章是根据b站视频 刘铁猛《C#语言入门详解》全集 所自己整理的基于C++基础的学习笔记,如有错误还请指出,本系列文章的前提是有C++的基础,会有很多关于C++与C#的对比,如有错误,还请指出,我们共同进步

  一,通过Vs2022创建C#程序

通过这个会创建出如下面图片的程序框架

如果没有,还请去安装器安装相关插件

二,对框架程序的简单介绍

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//上面的是一些名称空间,都是一些常用的名称空间,与C++中的名称空间类似

namespace ConsoleApp2   //这个名称空间的命名默认是我们解决方案(solution)的名称
{
    internal class Program  //这是由我们自己编写的类,名称默认是项目名
    {
        static void Main(string[] args) //程序进入的入口,类比C++的main函数
        {
        }
    }
}

三,Hello World

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

namespace ConsoleApp2
{
    internal class Program
    {
        static void Main(string[] args)
        {
           Console.WriteLine("Hello World!");

           System.Console.WriteLine("Hello world");
            //Console类其实是System名称空间下的类
        }
    }
}

Console 是类库中的类, " . "  是成员操作符,后面是类中的一个函数,在窗口上打印东西 

我们写的两条语句其实等价,在类前加上名称空间叫做 全限定名(完全限定名),但我们在最开始写了 using System; 所以主程序中的System. 不写也没事

四,类和名称空间

C#是完全面向对象的语言,所以主程序本身也是一个类

名称空间是以树状结构组织类和其他类型

类和名称空间放在什么地方

类和名称空间放在类库中

类库的引用

我们想要使用某个类,就要先引用对应的类库 
具体方式是从项目中的references 右击Add references 然后找到需要的类库进行引用
这些都是vs2022自带的库,当然也可以引用我们自己写的类库,还不大会,之后补充

DLL引用(黑盒引用)

指的是对编译好的dll直接引用,无法看到源代码,当类库出现问题时,只能找类库编写者修改

项目引用(白盒引用)

有源代码,我们可自行调试和修改

一个项目是可以被其他被其他solution所引用,当前solution仅有我们自己创建的ConsoleApp2项目
右击solution—Add—Existing project,可以添加现有项目

依赖关系

引用使用某个类库后,我编写的程序对这个类库就产生了依赖性,若类库有问题,程序就会有问题

类库中的类有问题,我的程序就有问题,这就是依赖关系,也称作耦合关系

优秀的程序往往追求高内聚(功能精确放到类中),低耦合(类之间的关系尽可能的低)

UML(通用建模语言)类图

用图的形式把程序中的关系用图的形式表示,
类图,展现类之间的关系 

使用NuGet添加对dll的引用,用来解决复杂依赖关系

NuGet可以将多个类库同时引用

基础阶段用不上

类的三大成员

简单一说不代表全部,后面会重点且全面地记录


属性(Property)

    存储数据,组合起来表示类或对象当前的状态


方法(Mothod)

由c语言的函数进化而来,表示对象能做什么
 


 属性和方法可以类比数据结构和算法


事件(Event)

类或对象通知其他类或对象的机制,为C#特有


对于上面三种成员,某些类或对象侧重不同,比如Timer类库侧重事件

静态成员与实例成员

静态成员隶属于类而不是某一个对象,被所有对象共享,关键字是static
静态(static)成员 在语义上表示他是类的成员
实例(非静态)成员,隶属于对象的成员

静态成员是不能用实例访问的,只能用类名使用成员访问操作符访问

五,类和对象的关系 

对象也称作实例,是类经过“实例化"后得到的内存中的实体
“实例化”理解为依照类去创建按对象
一般使用new操作符来创建类的实例
引用变量(这个后面会说,与C++还是区别挺大的) 与实例的关系
       引用变量---孩子 ,实例---气球
       气球不一定有孩子牵着
       多个孩子可以通过自己的绳子牵着同一个气球,也可以都通过一根绳子牵气球

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

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //只有气球
            new Form();   //没有孩子牵着的气球很快就会飞走
                          //内存垃圾收集器很快也就会把这个实例给收回了
            //有孩子,但是没有气球
            Form Form;   //这个引用变量没有任何实例

            //有孩子,并且牵着气球
            Form myForm;
            myForm = new Form();  //引用变量有指向的实例

            //多个孩子通过各自的绳子牵着同一个气球
            Form myForm1;
            Form myForm2;
            myForm1= new Form();
            myForm2 = myForm1;    //两个引用变量指向的是同一个实例
                                  //通过赋值,或者具体函数可以证明两个变量 指向的是一个实例,就不再说了

            //多个孩子同过同一根绳子牵着气球
            //这个要等到 了解ref 引用参数之后才好说
            //他大致与 C++的引用是一致的
        }
    }
}

首次,Form是一个类,这里没有说他的用法,只是演示引用变量与实例之间的关系
然后,这里只是提一嘴,并不细讲,后面会详细介绍他们之间内存中的关系
 


 


 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值