另外对于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语句中加入抛出异常是很有意义的!
联系客服