项目框架规范
1.在项目中可将要用到的文件夹先创建出来,后续其他窗体或模块可分别放置在不同文件夹中。
如图1所示,分别创建DataClass、InfoAddForm、ModuleClass、PerForm文件夹,DataClass文件夹用来封装数据库类文件,InfoAddForm文件夹装载调用窗体部分,ModuleClass文件夹用来存放公共类模块,PerForm文件夹用来放置界面基本窗体。
用户可在开发过程中,根据实际情况合理创建文件夹,这样做可为后续实际开发提供清晰思路。
一个解决方案创建多个项目
添加链接描述
添加链接描述
添加链接描述
添加链接描述
添加链接描述
在一个解决方案中是可以添加多个项目的,多个项目之间可以存在依赖关系,也可以相互独立
相互独立:每个项目都有自己的入口,则同一时间解决方案只能有一个活动入口,相当于只有一个项目存在,通过设置可以选择哪个项目作为活动项目,则之后的编译、运行都是针对该项目的。例如:在一个解决方案中有A、B两个项目,A、B项目单独运行,功能都是正常的,互不干扰,右键点击A项目,找到“设为启动项目”,运行程序,只针对A项目功能,此时B项目相当于保存在解决方案中。
项目之间相互依赖:项目间存在相互调用,只存在一个入口。这对于多种语言混编的管理特别方便。例如,在C#项目A中需要引用项目B,再将项目A、项目B都加入解决方案中后,项目A的引用中添加项目B名称,同时初始化项目A时,为方便在项目A中调用项目B的方法,可将项目B中被调用的方法重新命名。
将上述项目独立的两个项目改为项目之间的引用,在项目MES_VIEW中的引用中添加,右击引用,“添加引用-项目-浏览”,找到MESAPI项目文件夹,所有文件中筛选MESAPI.csproj,点击确定,即可引用成功。
现假设MESAPI中有如下类及方法:
public class MESADD
{
public int add()
{
int a = 0;
int b = 1;
return a + b;
}
}
在MES_VIEW中需要调用此方法,则窗体初始化时,重命名实项目MESAPI中的类MESADD为MESADD1,private MESAPI.MESADD MESADD1;并实例化this.MESADD1 = new MESAPI.MESADD();
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "Form1";
this.Text = "Form11";
this.ResumeLayout(false);
this.MESADD1 = new MESAPI.MESADD(); //实例化
}
private MESAPI.MESADD MESADD1; //重命名
#endregion
同时在需要调用的地方引用,代码如下,运行程序,可在输出中查看,或打断点,按F11查看程序跳转的位置是否为项目MESAPI中的类方法
namespace MES_VIEW
{
using MESAPI; //引用
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Console.WriteLine(MESADD1.add()); //方法引用
}
}
}
公共类模块设计
1.变量定义
静态全局变量
定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量。
特点:
A、该变量在全局数据区分配内存。
B、初始化:如果不显式初始化,那么将被隐式初始化为0。
public static string Login_ID = ""; //定义全局变量,记录当前登录的用户编号
public static string Login_Name = ""; //定义全局变量,记录当前登录的用户名
静态全局变量与非静态全局变量二者最大区别:这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。
例如源文件程序包含2个公共类,分别为A类和B类,在A类中定义静态全局变量,即加static关键字,则在A类模块中通用,但在B类模块中则无效,在A类中定义非静态全局变量,即不加static关键字,则在A类模块中通用,在B类模块中该变量也有效。
静态局部变量
定义:在局部变量前加上static关键字时,就定义了静态局部变量。
特点:
A、该变量在全局数据区分配内存。
B、初始化:如果不显式初始化,那么将被隐式初始化为0。
C、它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。
2.类中方法
1.类中静态方法与非静态方法
C#的类中可以包含两种方法:静态方法和非静态方法。.使用了static 修饰符的方法为静态方法,反之则是非静态方法。 静态方法是一种 特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要首先创建一个类的实例(即对象),而是采用类名静态方法的格式 。
1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用! static内部只能出现static变量和其他static方法!而且static方法中还不能使用this…等关键字。因为它是属于整个类!
2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁