如何声明和使用读/写属性
本文关键字:属性 何声明 声明 | 更新日期: 2023-09-27 18:34:22
我刚刚开始学习 C#,在以下代码的特定测试答案中提到:
Tak 的 set 属性缺失或不正确。
该代码由 2 个类组成。
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: 控制台应用程序6.vshost.exe(:已加载 'C:''Windows''Microsoft.Net''assembly''GAC_32''System.Data''v4.0_4.0.0.0__b77a5c561934e089''System.Data.dll'. 跳过加载符号。模块优化和调试器选项 "仅我的代码"已启用。'ConsoleApplication6.vshost.exe' (CLR v4.0.30319:控制台应用程序6.vshost.exe(:已加载 'C:''Windows''Microsoft.Net''assembly''GAC_MSIL''System.Xml''v4.0_4.0.0.0__b77a5c561934e089''System.Xml.dll'. 跳过加载符号。模块优化和调试器选项 "仅我的代码"已启用。线程0x1610已退出,代码为 259 (0x103(。线程0x1638已退出,代码为 0 (0x0(。线程 0x13f4已退出,代码为 259 (0x103(。 'ConsoleApplication6.vshost.exe' (CLR v4.0.30319: 控制台应用程序6.vshost.exe(:已加载 'C:''users''Stefanos''documents''Visual Studio 2013''项目''控制台应用程序6''控制台应用程序6''bin''调试''控制台应用程序6.exe'. 已加载符号。线程0x1480已退出,代码为 259 (0x103(。 线程0x1498已退出,代码为 259 (0x103(。
由于我真的是Visual Studio和C#的新手,如果有人可以向我展示错误或向我解释问题所在,我将不胜感激。
属性Val
的set
始终将属性设置为相同的值。相反,它最有可能将属性设置为用户输入的值:
set { val = value; }
或者,如果意图是使值始终为 3.14(即只读(,则可以删除 setter,get 将返回值:
class Takis
{
public double Val
{
get { return 3.14; }
}
public Takis()
{
}
}
Val 属性中的集合应该是 val = 值; value
C# 中是一个关键字,是使用实例化为属性分配的值。
您的媒体资源的行为方式与属性通常不同。当我设置像 23.4 这样的值时,我希望它能坚持下去。在你的情况下,你的班级不在乎我设置了什么。当我设置某些东西时,实际上,该属性将是 3.14。
您的媒体资源应设置给定的值(在本例中为 23.4(。您可以使用 value
关键字执行此操作:
public double Val
{
get
{
return val;
}
set
{
val = value;
}
}