C# 类中成员变量不匹配
本文关键字:变量 不匹配 成员 | 更新日期: 2023-09-27 18:31:36
我是C#的新手,正在编写一段代码来做一些练习。令我惊讶的是,我可以在 C# 类中使用未定义的成员变量,就好像它们已被定义一样。下面是我的代码。在类 Person 中,我只定义了"myName"和"myAge",但我可以使用成员变量 "Name" 和 "Age" 没有任何问题。可以编译代码并运行可执行文件。有人可以告诉我为什么我可以在不定义它们的情况下使用"名称"和"年龄"吗?非常感谢,
C# 代码
=========================================使用系统;
namespace prj01
{
class Person
{
private string myName = "N/A";
private int myAge = 0;
public string Name
{
get
{
return myName;
}
set
{
myName = value;
}
}
public int Age
{
get
{
return myAge;
}
set
{
myAge = value;
}
}
public override string ToString()
{
return "Name = " + Name + ", Age = " + Age;
}
}
class Program
{
static void Main(string[] args)
{
// property
Console.WriteLine("Simple Properties");
Person person01 = new Person();
Console.WriteLine("Person details - {0}", person01);
person01.Name = "Joe"; // Why can I use "Name"?
person01.Age = 99; // Why is "Age" accessible and usable?
Console.WriteLine("Person details - {0}", person01);
Console.ReadLine();
}
}
}
====
你确实定义了它们。 就在这儿:
public string Name
{
get
{
return myName;
}
set
{
myName = value;
}
}
public int Age
{
get
{
return myAge;
}
set
{
myAge = value;
}
}
这些在 .NET 类中称为"属性"。 在当前代码中,它们本质上是"直通"属性,除了委派对成员变量的访问权限外,什么都不做。 它们编译成包装这些成员变量的 getter 和 setter 方法。
名称和年龄是公共属性,它们由类外部的代码用于发送数据,即修改私有变量。 如果将"名称"旁边的"公共"更改为"专用",则由于保护级别的原因,您将无法使用该属性:公共、专用、受保护和无之间有什么区别?
Net 类公开 2 种类型的数据成员
1>字段 :
在您的示例中,它们是 myName 和 myAge,因为它们是私有的,因此您只能在类成员中使用它们。
2> 属性 在你的班级里,它们是姓名和年龄。由于它们是公开的,因此可以在课堂内外访问它们。使用属性,您可以获取者和/或二传手。getter 使您能够从属性中读取值,例如:
人员 人01 = 新人();
int xyz = person01。年龄;它是内部调用人员01。Age.get();
和 setter 启用属性的设置值 IE
人员 人01 = 新人();
人01.年龄 = 2;//这是内部呼叫人员01。年龄集(2);
希望这能澄清。