C# 在我的表单中使用不同类的方法

C# 在我的表单中使用不同类的方法,c#,winforms,loops,class,C#,Winforms,Loops,Class,你好 所以,我有一个将阿拉伯数字转换为罗马数字的类。如果用户在dropdownlist中选择了“Arabisch”(阿拉伯语),我有一个执行的循环。 如果用户选择了“römish”(罗马),我想做同样的循环,但将数字转换为罗马。在下面,您可以看到这两个类的代码。在我的循环中,初始化“ArabicToRoman”类的方法以将数字转换为罗马数字的最佳方法是什么 namespace Friedhof_Generator { class ArabicToRoman { p

你好

所以,我有一个将阿拉伯数字转换为罗马数字的类。如果用户在dropdownlist中选择了“Arabisch”(阿拉伯语),我有一个执行的循环。 如果用户选择了“römish”(罗马),我想做同样的循环,但将数字转换为罗马。在下面,您可以看到这两个类的代码。在我的循环中,初始化“ArabicToRoman”类的方法以将数字转换为罗马数字的最佳方法是什么

namespace Friedhof_Generator
{
    class ArabicToRoman
    {
        private string[] Tausender = 
            { "", "M", "MM", "MMM" };
        private string[] Hunderter = 
            { "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };
        private string[] Zehner =
            { "", "X", "XX", "XXX", "XL", "L", "LX" , "LXX", "LXXX", "XC" };
        private string[] Einer =
            { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };

        private string ArabicRoman(int arabic)
        {
            if (arabic >= 4000)
            {
                int tausend = arabic / 1000;
                arabic %= 1000;
                return "(" + ArabicRoman(tausend) + ")" +
                    ArabicRoman(arabic);
            }

            string result = "";

            int num;
            num = arabic / 1000;
            result += Tausender[num];
            arabic %= 1000;

            num = arabic / 100;
            result += Hunderter[num];
            arabic %= 100;

            num = arabic / 10;
            result += Zehner[num];
            arabic %= 10;

            result += Einer[arabic];

            return result;
        }
    }
}
在阿拉伯阶级之上。下面的类与循环

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Friedhof_Generator
{
    public partial class frm_Grabnummer : Form
    {
        public frm_Grabnummer()
        {
            InitializeComponent();

            ddl_Feld.Items.Add("Arabisch");
            ddl_Feld.Items.Add("Römisch");
            ddl_Feld.Items.Add("Alphabetisch");

            ddl_Reihe.Items.Add("Arabisch");
            ddl_Reihe.Items.Add("Römisch");
            ddl_Reihe.Items.Add("Alphabetisch");

            ddl_Nr.Items.Add("Arabisch");
            ddl_Nr.Items.Add("Römisch");
            ddl_Nr.Items.Add("Alphabetisch");
        }

        private void ddl_Feld_SelectedIndexChanged(object sender, EventArgs e)
        {
        }

        private void btn_Start_Click(object sender, EventArgs e)
        {
            int FeldVon, FeldBis, ReiheVon, ReiheBis, NrVon, NrBis;
            string Friedhof;

            FeldVon = int.Parse(tb_Von_Feld.Text);
            FeldBis = int.Parse(tb_Bis_Feld.Text);
            ReiheVon = int.Parse(tb_Von_Reihe.Text);
            ReiheBis = int.Parse(tb_Bis_Reihe.Text);
            NrVon = int.Parse(tb_Von_Nr.Text);
            NrBis = int.Parse(tb_Bis_Nr.Text);
            Friedhof = tb_Friedhof.Text;

            if (ddl_Feld.Text == "Arabisch")
            {
                for (int iFeld = FeldVon; iFeld <= FeldBis; iFeld++)
                {
                    for (int iReihe = ReiheVon; iReihe <= ReiheBis; iReihe++)
                    {
                        for (int iNr = NrVon; iNr <= NrBis; iNr++)
                        {
                            lb_Ausgabe.Items.Add(string.Format("{0} - {1} - {2} - {3}", Friedhof, iFeld, iReihe, iNr));
                        }
                    }
                }
            }
            else if(ddl_Feld.Text == "Römisch")
            {

            }
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows.Forms;
名称空间Friedhof_生成器
{
公共部分类frm_Grabnummer:表单
{
公共frm_Grabnummer()
{
初始化组件();
ddl_Feld.Items.添加(“阿拉伯式”);
ddl_Feld.Items.添加(“Römish”);
ddl_Feld.Items.添加(“字母表”);
ddl_Reihe.Items.添加(“阿拉伯式”);
ddl_reiche.Items.Add(“Römish”);
ddl_Reihe.Items.添加(“字母表”);
ddl_No.Items.添加(“阿拉伯式”);
ddl_编号项目添加(“Römish”);
ddl_编号项目添加(“字母表”);
}
私有void ddl\u Feld\u SelectedIndexChanged(对象发送方,事件参数e)
{
}
私有无效btn\u开始\u单击(对象发送者,事件参数e)
{
国际费尔德冯、费尔德比斯、雷赫冯、雷赫比斯、纳冯、纳比斯;
弦弗里德霍夫;
FeldVon=int.Parse(tb_Von_Feld.Text);
FeldBis=int.Parse(tb_Bis_Feld.Text);
ReiheVon=int.Parse(tb_Von_Reihe.Text);
ReiheBis=int.Parse(tb_Bis_Reihe.Text);
NrVon=int.Parse(tb_Von_Nr.Text);
NrBis=int.Parse(tb_Bis_Nr.Text);
Friedhof=tb_Friedhof.Text;
如果(ddl_Feld.Text==“阿拉伯语”)
{

对于(int-iFeld=FeldVon;iFeld,
ArabicToRoman
类似乎是一个典型的助手类,在过去的日子里,您只需简单地将其公开和静态即可

public static class ArabicToRoman
{
    private static string[] Tausender =  { "", "M", "MM", "MMM" };
    private static string[] Hunderter = { "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };
    private static string[] Zehner = { "", "X", "XX", "XXX", "XL", "L", "LX" , "LXX", "LXXX", "XC" };
    private static string[] Einer = { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };

    public static string Convert(int arabic)
    {
        ...
    }
}
用法

您可以从访问程序集的任何位置调用此函数

ArabicToRoman.Convert(234);

您还可以公开您的类和方法

public class ArabicToRoman
{
    private string[] Tausender =  { "", "M", "MM", "MMM" };
    private string[] Hunderter = { "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };
    private string[] Zehner = { "", "X", "XX", "XXX", "XL", "L", "LX" , "LXX", "LXXX", "XC" };
    private string[] Einer = { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };

    public string Convert(int arabic)
    {
        ...
    }
}
用法

您再次将其称为任何可以访问其所在程序集的地方

var converter = new ArabicToRoman();
converter.Convert(345);
然而,现在有一个大的推动和服务架构,你可以把它作为一个单例服务,并注入你的转换器。然而,这也是有争议的

对于您的情况和您对静态类或实例类的理解水平来说,这似乎是一个很好的选择


进一步阅读

使用static修饰符声明静态成员,该成员属于 类型本身而不是特定对象。静态修饰符 可与类、字段、方法、属性、运算符、, 事件和构造函数,但不能与索引器一起使用, 终结器,或类以外的类型


ArabicToRoman
类似乎是一个典型的助手类,在过去的日子里,您只需简单地将其公开和静态即可

public static class ArabicToRoman
{
    private static string[] Tausender =  { "", "M", "MM", "MMM" };
    private static string[] Hunderter = { "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };
    private static string[] Zehner = { "", "X", "XX", "XXX", "XL", "L", "LX" , "LXX", "LXXX", "XC" };
    private static string[] Einer = { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };

    public static string Convert(int arabic)
    {
        ...
    }
}
用法

您可以从访问程序集的任何位置调用此函数

ArabicToRoman.Convert(234);

您还可以公开您的类和方法

public class ArabicToRoman
{
    private string[] Tausender =  { "", "M", "MM", "MMM" };
    private string[] Hunderter = { "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };
    private string[] Zehner = { "", "X", "XX", "XXX", "XL", "L", "LX" , "LXX", "LXXX", "XC" };
    private string[] Einer = { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };

    public string Convert(int arabic)
    {
        ...
    }
}
用法

您再次将其称为任何可以访问其所在程序集的地方

var converter = new ArabicToRoman();
converter.Convert(345);
然而,现在有一个大的推动和服务架构,你可以把它作为一个单例服务,并注入你的转换器。然而,这也是有争议的

对于您的情况和您对静态类或实例类的理解水平来说,这似乎是一个很好的选择


进一步阅读

使用static修饰符声明静态成员,该成员属于 类型本身而不是特定对象。静态修饰符 可与类、字段、方法、属性、运算符、, 事件和构造函数,但不能与索引器一起使用, 终结器,或类以外的类型


我特别喜欢“过去的日子里……”这部分。请投赞成票;)@MongZhu过去的日子里还是害怕静态警察!@谢谢你的回答。我会花时间对这部分有更好的了解。^^我特别喜欢“过去的日子里……”部分。投票表决;)@MongZhu在过去的日子里,或者害怕静态警察!@general谢谢你的回答。我会花时间来了解更多^^