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语句中加入抛出异常是很有意义的!

原文地址:https://www.cnblogs.com/sheshouyanhun/p/2683891.html