如何在C#中重构这些类扩展 - c#

State1,State2和State3都具有相同的构造函数。我如何简化事情,这样我就不需要在State1,State2和State3中使用构造函数?

public class State1 : State{

    public State1( StateMachine owner ) : base( owner ){
    }
}

public class State2 : State{

    public State2( StateMachine owner ) : base( owner ){
    }
}

public class State3 : State{

    public State3( StateMachine owner ) : base( owner ){
    }
}

到目前为止,我能找到的最佳解决方案是:

        State1 s1 = new State( this ) as State1;
        State1 s2 = new State( this ) as State2;
        State1 s3 = new State( this ) as State3;

但是看起来很乱。

参考方案

如果您希望它们确实是State的子类,则没有,没有比这更简单的方法了,至少没有一种方法是正确的并遵循良好的设计模式。

您提议的解决方案实际上并没有您认为的那样起作用。它将创建三个State对象,并尝试将其强制转换为指示的子类。这将失败,并且在所有三种情况下as运算符都将评估为null

如何在C#中的循环过程中多次更改控件的属性 - c#

我正在尝试做这样的事情:int i; while(true) { label1.Text = i.ToString(); i++; Thread.Sleep(500); } (实际上,我正在尝试做更复杂的事情,这更有意义,但这只是我的问题的一个简单示例)我期望标签的文本每1/2秒更改一次..但是它被卡住了。谢谢 参考方案 您不能让GUI线程进入睡眠状态(因为…

如何在C#Linq中找到集合的最小差异对象 - c#

我有收藏Class MyData { int f1; int f2; int f3; int f4; } var mycollection =List<MyData>(); 我需要返回字段f1和f3之间具有最小差异的对象。我在下面查询了mycollection.select(obj => obj.f1 - obj.f3).Min(); 但是…

如何在C#中使用Telegram API发送消息 - c#

我想在C#中使用Telegram API将简单消息发送给号码。我在GitHub上找到了一些lib,但是我无法使用它们。谁能给一个简单的代码?我可以简单地进行HTTP调用吗? 参考方案 安装包电报使用Botfather创建一个Bot使用/ token命令获取api密钥(仍在botfather中)使用此代码:var bot = new Api("you…

如何在C#中将值从字符串数组传递到正则表达式 - c#

我当前正在编写一个程序,该程序将检查文件中的一行,并查看该行中是否包含美国州,并且该州的拼写也正确。我目前正在单一状态下工作。我希望能够查看是否有美国所有州都在排队。这是我到目前为止的代码using System; using System.Collections.Generic; using System.Linq; using System.Text; …

如何在C#上使用参数调用JavaScript函数 - c#

我想用C#中的HttpWebRequest或WebRequest调用JavaScript函数。我不想使用可以称为invokemember的Web浏览器。这是我的代码:public void MyWebRequest(string url, string method, string data) { request = WebRequest.Create(ur…