菜鸟问问题1 关于C#基础

问题描述

大神帮忙看一下以下的两处代码有什么区别,一个是自己写的,一个是老师写的。------------------------------下面是自己写的-------------------------------------------Console.WriteLine("请选择QQ在线状态,0-4均可输入");stringinput=Console.ReadLine();QQStates=(QQState)Enum.Parse(typeof(QQState),input);Console.WriteLine("您的QQ是{0}状态",s);Console.ReadKey();------------------------------下面是老师写的------------------------------------------Console.WriteLine("请选择QQ在线状态,0-4均可输入");stringinput=Console.ReadLine();switch(input){case"0":QQStates0=(QQState)Enum.Parse(typeof(QQState),input);Console.WriteLine("您的QQ状态是{0}",s0);break;case"1":QQStates1=(QQState)Enum.Parse(typeof(QQState),input);Console.WriteLine("您的QQ状态是{0}",s1);break;case"2":QQStates2=(QQState)Enum.Parse(typeof(QQState),input);Console.WriteLine("您的QQ状态是{0}",s2);break;case"3":QQStates3=(QQState)Enum.Parse(typeof(QQState),input);Console.WriteLine("您的QQ状态是{0}",s3);break;case"4":QQStates4=(QQState)Enum.Parse(typeof(QQState),input);Console.WriteLine("您的QQ状态是{0}",s4);break;}Console.ReadKey();--------------------------实现的效果是一样的啊?为什么老师这样写?-------------------------------------------菜鸟一枚,怕有什么想不到的,所以问一下大神--------------

解决方案

解决方案二:
既然代码可以参数化(5处代码用参数取代取代之后都一样),那么自然是你写的是很好的,老师写的很糟。一般来说,编程讲究“只写一遍代码”。这样的代码具有高级一点的抽象功能,当将来维护时,也容易一次性更新维护。你老师把代码写成那样,我想不出来解释原因。请你自己去问他。如果硬要解释,只能说“老师最初也没有想好,后来则懒得重构代码”了。
解决方案三:
老师一下子写许多代码,显得很有学问的样子只要你验证一下input的确是在0到4之间(if(input>="0"&&input<="4")...)自然你的代码是好的
解决方案四:
你的写法不在枚举范围时会报错,其实老师写例子一般都为了让大部分学生都能理解,不一定最好,但一般容易被学生接受,你能更进一步当然最好,但其他学生不一定也能做到这步
解决方案五:
你输入5的时候就不一样了
解决方案六:
引用4楼shingoscar的回复:

你输入5的时候就不一样了

嗯!谢谢提醒!
解决方案七:
你的代码看起来简洁些,再验证下input是否是在允许的范围内(0-4)就很好了。
解决方案八:
引用2楼xuzuning的回复:

老师一下子写许多代码,显得很有学问的样子只要你验证一下input的确是在0到4之间(if(input>="0"&&input<="4")...)自然你的代码是好的

input接收的是string类型,如果不转换成int类型,直接的input>="0"&&input<="4"好像不行吧?

时间: 2024-10-11 15:39:46

菜鸟问问题1 关于C#基础的相关文章

新手菜鸟问一下spinner右侧箭头按钮下拉怎么做?

问题描述 新手菜鸟问一下spinner右侧箭头按钮下拉怎么做? spinner下拉菜单,点击右侧小箭头按钮出现的下拉菜单选项?该怎么做?求大神指点? 解决方案 首先在xml文件的spinner属性中增加android:requiresFadingEdge="none",android:spinnerMode="dropdown"这2个属性,然后给spinner绑定适配器的时候SpinnerAdapter styleAdapter = new SpinnerAdapt

c菜鸟问个题,根据输入的数打印 相应的图形

问题描述 c菜鸟问个题,根据输入的数打印 相应的图形 题目要求如图,就是根据输入的数 打印相关图形 解决方案 #include <stdio.h>int main(){ char mch[] = ""xyz0123""; int n = 5; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i < j) printf(""%c"

emc菜鸟问 Poll server agent failed. Client non-data stream error.

问题描述 emc菜鸟问 Poll server agent failed. Client non-data stream error. Poll server agent failed. Client non-data stream error.日志中有不少这个,什么意思有什么问题

求问制作手机app的基础

问题描述 求问制作手机app的基础 各位大神,请问在制作一个手机软件之前,需要有哪些基本知识?html, css, java吗? 跪求解答 解决方案 android 的话java吧 还有xml算不算 最近是native 的c和c++,后面这一块可能以后还会继续增加 ios并不知晓 解决方案二: android(javase),html5,css3,ios 解决方案三: 要看呢,如果是web app,则需要html.css.javascript等,如果是native app,看平台是android

server-JSP菜鸟问连接SQL SERVER 2008的问题

问题描述 JSP菜鸟问连接SQL SERVER 2008的问题 JSP代码 <%@ page contentType="text/html;charset=utf-8"%> <%@ page import="java.sql.*"%> <% Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); String url=&

菜鸟问mfc串口捕获异常的写法

问题描述 菜鸟问mfc串口捕获异常的写法 在看别人写的一段串口程序,对串口状态设置之后对异常的捕获为什么是这样的,CMemoryException,CFileException这些异常为什么捕获之后就清空指针没有做其他处理,而CException不是所有异常吗,为什么不只写这个. bool CAAT_DriverDlg::OpenUart1(int comIndex) {//这一段是 判断是否打开串口1 CString strOut; g_hComWnd = AfxGetMainWnd()->m

数据结构算法-菜鸟问,二叉树的非递归遍历问题

问题描述 菜鸟问,二叉树的非递归遍历问题 二叉树的非递归遍历跟着代码走一遍可以看懂是怎么实现的,想问一下利用栈非递归实现遍历是怎么想到的,代码是怎么来的呢 解决方案 我理解你的问题,意思是想问二叉树遍历是怎么出来这种算法的?,这是一个叫哈弗曼的人首先提出的二叉树概念,你要是想追溯本源就去了解他.. 我觉得学算法,_最主要就是要瞄准算法怎么解决问题,而不是去讨论起源,_ 就好比牛顿发现了行星轨道之间运转的规律--万有引力,,但是并不清楚为啥是遵循这样运动的.... 解决方案二: 我觉得你应该先把二

菜鸟问一个hibernate关于继承关系映射的配置问题

问题描述 菜鸟问一个hibernate关于继承关系映射的配置问题 按照教学视频配置: <class name="Employee" discriminator-value = "0"> <id name="id"> <generator class="native"></generator> </id> <property name="name&quo

对象-JAVA 菜鸟 问一个菜鸟问题 list 的排序问题

问题描述 JAVA 菜鸟 问一个菜鸟问题 list 的排序问题 简化一下 list 情况 比如 一个 student 类 只有两个参数 学号 sno 和 成绩 grade 现全放入 ArrayList中 如何按成绩 将 学生对象排序 实现目标如下即可 002 97 003 95 001 90 求各位路过大神 不吝指教后生 解决方案 先自己定义一个对比的方法类 class MyIntComparator implements Comparator{ public int compare(Objec