たとえば、デバイスの種類を切り替える必要があるプロジェクトに取り組んでいます。C/C++ のように定義したい。これは C# でも同じようにできないことがわかりました。それがどのように機能するかを学ぶためにいくつかの実験的なコードを作成していますが、1 つのことにこだわっています。以下のコードでそれを指摘しました。ぜひご覧ください:)。私のコードのアイデアが明確であることを願っていますが、それを機能させるにはどのように変更すればよいですか?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
productnames pn = new productnames();
string str = textBox1.Text;
switch (pn) // I am getting an red line under pn; which says: A switch expression or case label must be a bool, char, string, integral, enum or corresponding nullable type
{
case DEVICE1:
label1.Text = str+"CASE1";
break;
case DEVICE2:
label1.Text = str+"CASE2";
break;
}
}
}
public class productnames
{
public const string DEVICE1 = "name1";
public const string DEVICE2 = "name2";
public const string DEVICE3 = "name3";
public const string DEVICE4 = "name4";
}
クラス全体を切り替えることができないため、上記のコードは機能しません。より良いアプローチは、次のようなものです。
private const string DEVICE1 = "dev1";
private const string DEVICE2 = "dev2";
private void button1_Click(object sender, EventArgs e)
{
string str = textBox1.Text;
getCommand(str)
}
private void getCommand(string Dev)
{
switch (Dev)
{
case DEVICE1:
label1.Text = str+"CASE1";
break;
case DEVICE2:
label1.Text = str+"CASE2";
break;
}
}
この例は役に立つかもしれません:
#define CMD_VERSION 0
#define CMD_TYPE 1
private void getCommandName(CMD)
{
switch(CMD)
{
case CMD_VERSION:
return ("ver");
case CMD_TYPE:
return ("serienummer");
}
}