gpt4 book ai didi

c# - 如何实现类型切换

转载 作者:太空狗 更新时间:2023-10-30 00:41:56 24 4
gpt4 key购买 nike

如果变量的数据类型与特定的基本类型匹配,我有一些代码片段需要执行。目前我正在使用 if-else 循环执行此操作

例如:

  if(a is float)
{
// do something here
}
else if (a is int)
{
// do something here
}
else if (a is string)
{
// do something here
}

因为我有太多类型需要比较,所以使用 If else 非常笨拙。由于 C# 不允许类型切换,是否有替代方法来执行此操作?

最佳答案

重构代码并使用方法重载:

void SomeCode()
{
...
Action(3.0f); // calls float overload
Action("hello"); // calls string overload
...
}

void Action(float a)
{
...
}
void Action(int a)
{
...
}
void Action(string a)
{
...
}

编辑:
通过使用 dynamic 关键字 (.NET 4),它以这种方式工作(完整的控制台应用程序):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
SomeCode();
}

static void SomeCode()
{
object o = null;
switch (new Random().Next(0, 3))
{
case 0:
o = 3.0f;
break;
case 1:
o = 3.0d;
break;
case 2:
o = "hello";
break;
}
Action((dynamic)o); // notice dynamic here
}

static void Action(dynamic a)
{
Console.WriteLine("object");
}

static void Action(float a)
{
Console.WriteLine("float");
}
static void Action(int a)
{
Console.WriteLine("int");
}
static void Action(string a)
{
Console.WriteLine("string");
}
}
}

关于c# - 如何实现类型切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18016786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com