我是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);
有什么不对劲,有人知道这些问题吗?
答案 0 :(得分:8)
您只需要两个属性或只使用
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;
}
}
答案 1 :(得分:3)
您不需要创建自己的类,.NET支持2个类似于此的内置类。因此,您可以使用KeyValuePair<string, string>
或Tuple<string, string>
代替
答案 2 :(得分: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
答案 3 :(得分: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; }
}
}