cyl*_*lee 0 c# switch-statement
string returnString;
switch(Type) {
case 0: returnString = exampleFunction(foo0, out int exitCode); break;
case 1: returnString = exampleFunction(foo1, out int exitCode); break;
case 2: returnString = exampleFunction(foo2, out int exitCode); break;
}
Run Code Online (Sandbox Code Playgroud)
当我编写这段代码时,VS向我显示了一个错误:'名为'exitCode'的局部变量已在此范围内为第4行和第5行定义.因此,如果我想获得两个以上不同类型的变量exampleFunction
, 我该怎么办?如果我不能out
在代码中使用,我应该使用元组来获取returnString
和exitCode
从函数中获取吗?
你可以exitCode
在之前声明变量switch
.您应该使用某个值初始化它或default
在您中分支switch
.否则有一个流程,在该流程exitCode
之后将被取消初始化switch
.编译器不会通过这个.break
每个人之后也不要忘了case
:
int exitCode = 0;
string returnString;
switch(Type) {
case 0: returnString = exampleFunction(foo0, out exitCode); break;
case 1: returnString = exampleFunction(foo1, out exitCode); break;
case 2: returnString = exampleFunction(foo2, out exitCode); break;
}
Run Code Online (Sandbox Code Playgroud)
但总体而言,有一个方法返回两个不同的值(一个作为返回值,第二个作为输出参数)是一种不好的做法.考虑使用一些简单的类将这些值作为属性:
class SomeValue
{
public string Foo { get; set; }
public int Code { get; set; }
}
static SomeValue ExampleFunction(string input)
{
return new SomeValue
{
Foo = input,
Code = 1,
};
}
static void Main(string[] args)
{
// ...
SomeValue val = null;
switch (Type)
{
case 0: val = ExampleFunction(foo0); break;
case 1: val = ExampleFunction(foo1); break;
case 2: val = ExampleFunction(foo2); break;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
743 次 |
最近记录: |