2

我是 asp.net 的新手并尝试创建一个对象,但出现语法错误

public class pair
{

    private string key;
    private string value;

    public pair(string key, string value)
    {
        this.key = this.setKey(key);
        this.value = this.setValue(value);
    }

    private void setKey (string key) {
        this.key = key;
    }

    public string getKey()
    {
        return this.key;
    }

    private void setValue(string value)
    {
        this.value = value;
    }

    public string getValue()
    {
        return this.value;
    }

}

这两行

this.key = this.setKey(key);
this.value = this.setValue(value);

有问题,有人知道问题吗?

4

4 回答 4

12

您在这里只需要两个属性或只使用

public class Pair
{
    public string Key { get; private set; }
    public string Value { get; private set; }

    public Pair(string key, string value)
    {
        this.Key= key;
        this.Value = value;
    }   
}
于 2012-10-17T06:11:00.183 回答
3

您不需要创建自己的类,.NET 已支持 2 个类似的内置类。所以你可以使用KeyValuePair<string, string>orTuple<string, string>代替

于 2012-10-17T06:13:53.320 回答
1

每个人都提供了解决方案,但没有人回答实际问题。问题是赋值的右侧是一个void方法,但它需要具有与赋值目标相同的类型,或者隐式转换为赋值目标类型的类型。由于string是密封的,因此在这种情况下,表达式的右侧必须是字符串表达式。

string M1() { return "Something"; }
object M2() { return new object(); }
void M3() { }

string s = "Something"; //legal; right side's type is string
string t = M1(); //legal; right side's type is string
string u = M2(); //compiler error; right side's type is object
string v = M2().ToString(); //legal; right side's type is string
string w = (string)M2(); //compiles, but fails at runtime; right side's type is string
string x = M3(); //compiler error; right side's type is void
于 2012-10-17T06:29:47.460 回答
0

您不需要使用方法,只需使用构造函数参数:

public class pair
{

    private string key;
    private string value;

    public pair(string key, string value)
    {
        this.key = key;
        this.value = value;
    }

    private string Key 
    {
        get { return key; }
        set { key = value; }
    }

    public string Value
    {
        get { return this.value; }
        set { this.value = value; }
    }
}
于 2012-10-17T06:11:26.437 回答