在C#中创建键值对

5

我一直在尝试创建一个具有键值对属性的类,我尝试过使用Dictionary关键字,但我需要像这样的东西:

ClassName clsName = new ClassName();

clsName.PropertyName.Add["Key"] = value;

我希望它成为动态属性,这样我就可以发送任何数据类型。

4
通常情况下,您会直接与类或属性进行交互(例如clsName ["Key"] = value等),而不是通过“添加”操作。因此,我不确定您希望做什么。您只是需要在类中创建一个索引器吗? - Matthew Haugen
与JavaScript/Python或其他语言不同,.NET大多是强类型的,因此使动态属性更加困难。但是,您可以尝试在其中一个属性中实现索引器。但是,由于强类型的本质,索引器可能会返回对象,您需要将其转换为其他类型。 - lostincomputer2
这里有点不太清楚你在问什么。你是否想要一个类似于“字典”功能的东西,但允许在值中存储任何类型的数据?如果是这样,那么你可以使用object作为字典的值,使用Dictionary<string,object>而不是自定义类。你是想创建一个能够存储其他类的表示的类吗?那么PropertyName的类型应该是Dictionary<string,object>。也许如果你能给我们展示一些你希望如何使用/处理/与这个假设类进行交互的例子,我们可以向你展示如何实现它。 - undefined
5个回答

7
如果我们假设你的keyvaluepair的键为字符串,值为整数,那么你可以尝试这个方法:

假设您的keyvaluepair的键为字符串,值为整数,则可以尝试以下方法:

clsName.PropertyName = new KeyValuePair<string, int>("keyName", 2);

您不需要使用任何Add方法。实际上,后者只有在您拥有一个集合并且想要向其中添加元素时才有意义。从您在问题中发布的内容来看,我们无法确定这是否是您的情况。


5

我建议您简单地使用“HASHTABLE”,这样对您来说会更容易。下面是语法。

    Hashtable hashtable = new Hashtable();
    hashtable.Add("Area", 1000);
    hashtable.Add("Perimeter", 55);

第一个参数代表键,第二个参数代表值。因此它是键值对。



3
如果您想学习基础的键值对类,可以考虑使用以下代码:
KeyValuePair<string, object>

你需要我为你工作吗?


1

我不确定我是否正确理解了问题,但显然您的要求可以通过使用 通用字典 来满足,其中键类型参数是 string,值类型参数是 object,也就是说,您可以像这样使用 Dictionary<string,object>

public class ClassName {
    public Dictionary<string, object> Dictionary { get; set; }
}

然后:

ClassName classObject = new ClassName();
classObject.Dictionary.Add("Key", new { "value" });

1
public class ClassName
{
  public KeyValuePair<string, object> PropertyName {get; set; }
}

var c = new ClassName();
c.PropertyName = new KeyValuePair<string, object>("keyName", someValue);

或者,如果您需要存储多个值,请使用Dictionary<string, object>作为属性的类型。

public class ClassName
{
    public ClassName()
    {
       this.PropertyName = new Dictionary<string, object>();
    }

    public Dictionary<string, object> PropertyName {get; set; }
}

var c = new ClassName();
c.PropertyName.Add("stringKey", anyValue);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接