gpt4 book ai didi

c# - C#属性中 'value'保留字的类型是什么

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:59 24 4
gpt4 key购买 nike

我想知道属性中的“值”关键字采用什么类型。

所以:

public class Test
{
string _numberAsString;
int _number = -1;

public Test() {}

public string NumberAsString
{
get { return _numberAsString; }
set { _numberAsString= value; }
}

public int Number
{
get { return int.Parse(_numberAsString); }
set { _number = value; }
}
}

//elsewhere
Test t = new Test();
t.Number = 5;

现在,这并没有像我预期的那样编译。 “值”的类型由属性的返回类型决定,对吗?我找不到任何具有这种效果的东西,也许它太明显了(我还没有读过语言规范,大概里面有什么东西)。

我问,因为我想用一个类型设置属性,然后将其转换为 getter 的类型。我想这真的没有意义。

看来我必须通过创建几个方法来实现这一点。

最佳答案

是的,“值”的类型由属性的返回类型决定。你到底想完成什么?您是否希望能够将 Number 或 NumberAsString 设置为有效值并从任一属性返回结果?

如果是这种情况,您需要执行以下操作:

public class Test
{
string _numberAsString;
int _number = -1;

public Test() {}
public string NumberAsString
{
get { return _numberAsString; }
set { _numberAsString= value; }
}
public int Number
{
get { return int.Parse(_numberAsString); }
set { _numberAsString = value.ToString(); }
}
}

这将允许您这样做:

Test t = new Test();
t.Number = 5;
Console.WriteLine(t.NumberAsString); // should print out "5"
t.NumberAsString = "5";
Console.WriteLine(t.Number); // should print out "5"

您不能为采用不同类型的属性设置 get 和 set。您唯一的选择是将其作为一种类型在内部存储,然后在 get 或 set(或两者)中执行从一种类型到另一种类型的转换。

关于c# - C#属性中 'value'保留字的类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/492822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com