switch语句变量类型和return值
switch(变量)语句变量是有严格控制的,如string类型和float类型编译就会报错,它支持char, int, short, long等等(仅限于C和C++中,在C#中则可以通过)
另外对于switch语句中的返回值不同的语言也有不同的限制,如C++语言和C#语言,看下面两段代码
#include<iostream> #include<string> using namespace std; class pro { private: int numberA; int numberB; public: pro(int A,int B) { numberA=A; numberB=B; } int operation(char op) { switch(op) { case '+': return numberA+numberB; break; } } }; int main() { pro p(5,8); cout<< p.operation('+')<<endl; getchar(); return 0; }
C++语言中在switch中没有硬性的返回值,仅仅在case语句中有返回值,编译运行无误。但是在C#语言就不行了看下面一段代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { private int numberA; private int numberB; int result; public int operation (string stroperation) { switch(stroperation) { case "+": result=numberA + numberB; break; } return result; } static void Main(string[] args) { Program Pro = new Program(); Pro.numberA = 1; Pro.numberB = 2; Console.WriteLine(Pro.operation("+")); } } }
在以上的C#代码如果直接在case语句中返回一个numberA + numberB; 而没有后面的return result;编译运行是通不过的。这应该是C#编译器更为安全的控制方式,防止case语句都没有执行,而无返回结果造成程序运行错误,因此在case语句中加入抛出异常是很有意义的!