C#学习 - 初识类与名称空间

类(class)& 名称空间(namespace)

是最基础的 C# 类型,是一个数据结构,是构成程序的主体
名称空间以树型结构组织

using System;
//前面的using就是引用名称空间
//相当于C语言的 #include <...>
namespace ConsoleApp//名称空间
{
    internal class Program//类
    {
        static void Main(string[] args)
        {
             Console/*类*/.WriteLine("Hello,world!");
             //当最前面没有引用名称空间时,需要在此段代码前加上名称空间:>System.Console.WriteLine("Hello,world!");
             //System/*类库*/.Console/*名称空间*/.WriteLine/*类*/
        }
    }
}

上段代码中:Program和Console就是类;ConsoleApp就是名称空间
建立了一个叫Program的类放在了一个叫ConsoleApp的名称空间中

using System.Windows;
using System.Windows.Shapes;
using System.IO;

namespace WpfApp1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Path
            //因为 System.IO 和 System.Windows.Shapes 中都有Path,
            //所以此时使用Path要使用名称空间,如:System.IO.Path 或 System.Windows.Shapes.Path
        }
    }
}

类库的引用

类库引用是使用名称空间的物理基础
引用方式:DLL引用、项目引用

DLL引用

又称黑盒引用,无源代码
在解决方案资源管理器 - 项目 - 引用 - 添加引用
一般进行DLL引用时会有参考文档
DLL引用因为没有源代码,如果类库中有错误,无法自己进行修改

namespace M
{
	class Program
	{
		static void Main(string[] args)
		{
			A/*类库*/.B/*名称空间*/.C/*类*/;
		}
	}
}

此处进行DLL引用的程序会对所引用的DLL类库有依赖性;同时程序内的Program和C有依赖关系,C发生错误时,Program也会错误

NuGet

程序目标:打开一个WPF窗口

//先引用 PresentationFramework 类库
namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            System.Windows.Window window = new System.Windows.Window();
            window.ShowDialog();
            //ShowDialog是类的使用方法
        }
    }
}

此时程序会报错,因为此类库还有一些更底层的依赖类库,需要先引用底层类库才能使用,就相当于使用某些模组时需要先加载前置模组
当一个类库的底层类库过多时,引用起来就很麻烦,这时候可以用到NuGet
在解决方案资源管理器 - 项目 - 引用 - 管理NuGet程序包中安装引用所需要的包后,引用中会自动添加NuGet包中的类库,这些添加的类库是由NuGet管理

项目引用

又称白盒引用,有源代码,当程序出现错误时可以直接修改
需要先将项目添加进正在使用的解决方案资源管理器
然后在解决方案资源管理器 - 项目 - 引用 - 添加引用 - 项目 - 解决方案中引用
若一个项目在不同解决方案资源管理器中都有使用时,称为项目重用

创建类库项目

解决方案资源管理器 - 添加新建项目(非新建项) - 选择类库
类库的框架需要与此前项目框架相同
例子:
C#学习 - 初识类与名称空间_第1张图片

//Tools.cs
namespace Arithmetic
{
    public class Tools
    {
        public static double Add(double a, double b)
        {
            return a + b;
        }
        public static double Sub(double a, double b)
        {
            return a - b;
        }
        public static double Mul(double a,double b)
        {
            return a * b;
        }
        public static double Div(double a, double b)
        {
            if(b==0)
            {
                return double.PositiveInfinity;
            }
            else
            {
                return a / b;
            }
        }
    }
}
//Program.cs
using System;
using Arithmetic;

namespace Calculator
{
    internal class Program
    {
        static void Main(string[] args)
        {
            double c = Tools.Div(10, 9);
            Console.WriteLine(c);
        }
    }
}

依赖关系

类(或对象)之间的耦合关系
底层类或者类库出现问题,上层的类或类库也会出现关系
写程序时,类应该分类放在对应的类库中;类或类库之间应该尽可能降低依赖。“高内聚,低耦合”

UML(通用建模语言)类图

可以用来展现类与类之间的关系

错误排除

阅读编译器报错
结合MSDN文档与搜索引擎
注:MSDN文档在VS的帮助 - 查看帮助中,需要先在VS Installer - 单个组件中下载Help Viewer

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