虽然尽管在使这些应用程序正常运行方面取得了成功,但我仍然不确定C#语言中的许多内容,例如良好的代码实践和使用许多关键字等.
C#类;我知道我可以用它们做什么,我知道构造函数和析构函数,实例化和属性,但我不确定何时应该使用它们.到目前为止,我已将我的所有代码写入Form1.cs文件中的不同方法中.这些方法使用完全不同的API执行各种不同的 *** 作.这显然意味着尝试维护代码变得非常困难,而且我发现在Form1.cs中找到任何内容会越来越令人沮丧.
我的问题是,我应该将我的代码分成不同的类吗?我试图将与sqlConnection和sqlCommands相关的东西拆分成一个单独的类,但是在我的Form1.cs中没有多次实例化同一个类,我看不出这更容易或任何好处.
我一直试图将一个新的应用程序拼凑在一起,但这次将功能保留在它自己的类中,我希望有人可以告诉我,我是愚蠢的,做错了或者至少给了我一些指导.
此应用程序最终将从App.Config加载我的连接字符串,连接到sql数据库并使用数据库中的多个表填充DataSet.这绝不是功能性的,因为我无法理解整个Classes问题.
非常感谢 :)
partial class Form1 : Form{ public Form1() { InitializeComponent(); } string myConnectionString; private voID Form1_Load(object sender,System.EventArgs e) { AppConfig cfg = new AppConfig(); if (cfg.loadConfig()) { myConnectionString = cfg.myConnectionString(); } if (!String.IsNullOrEmpty(myConnectionString)) { sqlConn sql = new sqlConn(); if (sql.createConnection(myConnectionString)) { MessageBox.Show("Connected!"); } } }}class myDataSet{ DataSet DataSet() { DataSet ds = new DataSet(); sqlConn sql = new sqlConn(); return ds; } public voID fillData() { try { sqlCommand sqlCmd = new sqlCommand("SELECT * FROM harDWare"); } catch (Exception ex) { MessageBox.Show(ex.Message); } }}class sqlConn : Idisposable{ sqlConnection sqlConn; public bool createConnection(string myConnectionString) { sqlConn = new sqlConnection(); sqlConn.ConnectionString = myConnectionString; try { sqlConn.open(); return true; } catch (Exception ex) { MessageBox.Show(ex.Message); } return false; } public voID dispose() { if (sqlConn.State == ConnectionState.Open) { sqlConn.Close(); sqlConn.dispose(); } }}class AppConfig{ Configuration cfg; public bool loadConfig() { try { cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); if (!file.Exists(cfg.filePath)) { MessageBox.Show("No configuration file"); } return true; } catch(Exception ex) { MessageBox.Show(ex.Message); } return false; } public string myConnectionString() { string connectionString = ConfigurationManager.ConnectionStrings["IT_ProjectConnectionString"].ConnectionString; return connectionString; }}解决方法 OOP背后的原理或多或少地说你应该尽可能地分解内容,以便相关的东西在他们自己的类中组合在一起,就像你的例子中的sql东西一样.另一个经常使用的例子是汽车的例子 – 如果你需要处理汽车的数据,你可以制作一个包含相关变量的汽车类,如最高速度,名称,颜色和适当的方法,例如驾驶(双倍距离)或类似的东西.
如果您不想要该类的不同对象并且在多个点上需要相同的行为,则可以通过多种方式阻止多个实例:如果所有点都在您的Form1中,您只需要将类作为类成员实例化一次,你可以在整个Form1类中使用它.如果您需要从不同的类访问它,您可以拥有一个全局变量(大多数人认为这是不好的做法)或者使您需要访问静态类 – 这样,您根本不需要实例化它.
如果你的应用程序非常小,你可能会把它全部放在你的Form1类中,但正如你自己注意到的那样,它会很快变得混乱和混乱.将类视为对代码进行排序的机会.想想与什么相关的东西,以及你期望在一起找到什么,并将这些东西放在课堂上.如果你坚持这一点,你最终得到的代码不那么令人沮丧,找到代码并且具有清晰和逻辑的结构.一旦事情变得更复杂,你就可以利用继承之类的东西,你可以重用那些在不同的应用程序中可能需要的东西(例如,数据库的东西).
这是一个非常简短和非常粗略的描述.我自己都不知道有关这个主题的好书(除了那些适合全程编程的初学者,这在这里似乎不合适),但我建议在OOP上找一个或者在那个主题上寻找好的介绍文章.就个人而言,我发现CodeProject是一个很好的文章来源. Here is one on OOP.
总结以上是内存溢出为你收集整理的何时在C#中使用Classes?全部内容,希望文章能够帮你解决何时在C#中使用Classes?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)