C# 调整检查并转换为数值
我是C#的初学者,遇到了一个相当不寻常的问题。现在,虽然我的代码目前工作正常,但我希望有更好的方法来实现它。有问题的代码在我的列表的C# 调整检查并转换为数值,c#,frameworks,game-engine,C#,Frameworks,Game Engine,我是C#的初学者,遇到了一个相当不寻常的问题。现在,虽然我的代码目前工作正常,但我希望有更好的方法来实现它。有问题的代码在我的列表的ForEach中。这两个示例类继承了示例。我希望有更好的方法来检查并以更可重用的方式(方法)执行以下代码,因为我在代码的其他地方使用了这样的检查和应用程序 public interface Example { // some stuff } public class Something { public List<Example> ke
ForEach
中。这两个示例类继承了示例。我希望有更好的方法来检查并以更可重用的方式(方法)执行以下代码,因为我在代码的其他地方使用了这样的检查和应用程序
public interface Example
{
// some stuff
}
public class Something
{
public List<Example> keybind ... // instantiate
public Something()
{
keybind.ForEach(b =>
{
// these checks are what I want to reuse
if (b.GetType() == typeof(Example1)
(b as Example1).Value = // new value
if (b.GetType() == typeof(Example2)
(b as Example2).Value = // new value
}
}
}
公共接口示例
{
//一些东西
}
公开课
{
public List keybind…//实例化
公开某事
{
keybind.ForEach(b=>
{
//这些检查是我想重复使用的
if(b.GetType()==typeof(示例1)
(b如示例1所示)。Value=//新值
if(b.GetType()==typeof(示例2)
(b如示例2所示)。Value=//新值
}
}
}
那么根本不做检查-这就是接口的用途。如果在接口中定义了一个属性值
,那么实现该接口的任何类都需要实现该属性,从而完全不需要强制转换
public interface Example
{
string Value { get; set; }
}
public class Something
{
public List<Example> keybind... // instantiate
public Something()
{
keybind.ForEach(b =>
{
b.Value = // new value
}
}
}
if (b is Example1 ex1)
{
//do stuff
}