我刚开始学习C#并在以下代码的具体测试答案中提到:
Tak 的设置属性缺失或不正确。
代码由2个类组成。
使用main的第1类:
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
Takis obj = new Takis();
obj.Val = 23.4;
Console.WriteLine(obj.Val);
}
}
}
第2课:
namespace ConsoleApplication6
{
class Takis
{
double val;
public double Val
{
get
{
return val;
}
set
{
val = 3.14;
}
}
public Takis()
{
}
}
}
在Visual Studio中,我得到并不总是以下内容:
' ConsoleApplication6.vshost.exe' (CLR v4.0.30319: ConsoleApplication6.vshost.exe):已加载 ' C:\的Windows \ Microsoft.Net \组件\ GAC_32 \ System.Data \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Data.dll中&#39 ;. 跳过加载符号。模块已优化并具有调试器选项 ' Just My Code'已启用。 ' ConsoleApplication6.vshost.exe' (CLR v4.0.30319:ConsoleApplication6.vshost.exe):已加载 ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \的System.Xml \ v4.0_4.0.0.0__b77a5c561934e089 \ system.xml.dll的&#39 ;. 跳过加载符号。模块已优化并具有调试器选项 ' Just My Code'已启用。线程0x1610已退出代码259 (0x103)。线程0x1638已退出,代码为0(0x0)。线程 0x13f4已退出代码259(0x103)。 ' ConsoleApplication6.vshost.exe' (CLR v4.0.30319: ConsoleApplication6.vshost.exe):已加载 ' c:\ users \ stefanos \ documents \ visual studio 2013 \项目\ ConsoleApplication6 \ ConsoleApplication6 \ BIN \调试\ ConsoleApplication6.exe&#39 ;. 符号已加载。线程0x1480已退出,代码为259(0x103)。 线程0x1498已退出,代码为259(0x103)。
由于我对Visual Studio和C#都很陌生,如果有人能告诉我错误或向我解释有什么问题,我会很感激。
答案 0 :(得分:4)
属性set
的{{1}}始终将属性设置为相同的值。相反,它应该很可能将属性设置为用户输入的值:
Val
或者,如果意图是始终的值为3.14(即只读),则可以删除setter并获取将返回值:
set { val = value; }
答案 1 :(得分:0)
Val属性中的set应为val = value; C#中的value
是关键字,是通过实例化分配属性的值。
答案 2 :(得分:0)
您的属性的行为与通常的属性不同。当我设置像23.4这样的值时,我希望能够坚持下去。在您的情况下,您的班级不关心 I 设置的内容。当我设置了什么,真的,属性将是3.14。
您的属性应设置给定的值(在本例中为23.4)。您可以使用value
关键字
public double Val
{
get
{
return val;
}
set
{
val = value;
}
}