使用字符串作为公共字符串名称?

发布于 2024-10-21 16:51:28 字数 641 浏览 4 评论 0原文

我有文件: dvars.cs

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

namespace GSM
{
    public static class dvar
    {
            static int _pspeed = 2;

            public static int pspeed
            {
                get
                {
                    return _pspeed;
                }
                set
                {
                    _pspeed = value;
                }
            }
    }

}

例如,我希望能够使用字符串来定义它(在另一个文件中,我想使用字符串作为变量名来设置 dvar.pspeed):

string mystring = "pspeed";
dvar.mystring = 1;

有谁知道我怎么做去做这个吗?

I have the file: dvars.cs

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

namespace GSM
{
    public static class dvar
    {
            static int _pspeed = 2;

            public static int pspeed
            {
                get
                {
                    return _pspeed;
                }
                set
                {
                    _pspeed = value;
                }
            }
    }

}

I want to be able to use a string to define it for example(in a different file i want to set the dvar.pspeed using a string as the variable name):

string mystring = "pspeed";
dvar.mystring = 1;

Does anybody know how I could go about this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

儭儭莪哋寶赑 2024-10-28 16:51:28

我认为你可以使用反射来做到这一点。

String mystring = "pspeed";
PropertyInfo pi = typeof(dvar).GetProperty(mystring);
pi.SetValue(dvar, 1, new Object[0]);

I think you could you use reflection to do this.

String mystring = "pspeed";
PropertyInfo pi = typeof(dvar).GetProperty(mystring);
pi.SetValue(dvar, 1, new Object[0]);
青萝楚歌 2024-10-28 16:51:28

你不能这样做,但是你可以使用索引器包装字典:

public static class Dvar 
{
    private static IDictionary<string, int> map = new Dictionary<string, int>();

    public static int this[string key]
    {
        get { return map[key]; }
        set { map[key] = value; }
    }
}

并像这样使用它:

Dvar["pspeed"] = 1;

You can't do this, however you could wrap a dictionary using an indexer:

public static class Dvar 
{
    private static IDictionary<string, int> map = new Dictionary<string, int>();

    public static int this[string key]
    {
        get { return map[key]; }
        set { map[key] = value; }
    }
}

And use it like this:

Dvar["pspeed"] = 1;
诗笺 2024-10-28 16:51:28

您可以只使用 Int32.Prase() 方法或(如果需要验证它,请使用 TryParse())。

You can just use the Int32.Prase() method or (TryParse() if you need to validate it).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文