C# - 在不重复对象名称的情况下使用字段和方法
C# - 在不重复对象名称的情况下使用字段和方法
我刚开始学习C#。我经常遇到的一个问题是当我在使用对象实例并且想要访问/分配多个字段时,我必须每次都调用对象名称。我来自Delphi的背景,我想知道C#是否有类似于with..do
块的东西。
例如。假设我有一个具有字段Name
和Address
的School
类。
在Delphi中,我可以这样做:
mySchool = School.new(); with mySchool do begin Name := '学校名称'; Address := '学校地址'; end
编译器会理解Name
和Address
是在mySchool
对象上调用的。
而在C#中,我必须这样做:
mySchool = new School(); mySchool.Name = "学校名称"; mySchool.Address = "学校地址";
我只是想知道是否有类似于上述Delphi的语言结构,可以消除我重复键入对象名称的需要。
我知道在这个例子中这样做相当琐碎,我应该使用带参数的构造函数,但我的问题是当我对同一个对象进行多项操作时,拥有这样的语言结构会节省我相当多的输入。
此外,我对命名空间有一些模糊的认识,尽管我理解你不能使用对象/变量作为命名空间。如果我错了,请纠正我。
问题的出现原因是,使用对象初始化器仍然需要每次手动输入属性的名称。解决方法是使用构造函数来实例化对象,并在构造函数中设置属性的值。以下是使用构造函数来解决问题的代码示例:
class Program
{
static void Main(string[] args)
{
School school1 = new School("School Name", "School Address");
}
}
public class School
{
public string Name { get; set; }
public string Address { get; set; }
public School(string name, string address)
{
this.Name = name;
this.Address = address;
}
}
通过使用构造函数,在实例化对象时可以直接传入属性的值,无需重复输入对象名称。这样可以更方便地使用字段和方法,提高代码的可读性和可维护性。
问题的原因是如果想要在多个连续的操作中重复使用对象,使用对象初始化器的方法就不再适用。
解决方法是使用对象初始化器的同时,将对象赋值给一个变量,然后使用该变量来访问对象的字段和方法。这样就不需要在每次使用对象时都重复写对象的名称。
下面是修改后的代码示例:
var mySchool = new School { Name = "School Name", Address = "School Address" }; // 使用变量访问对象的字段和方法 var schoolName = mySchool.Name; var schoolAddress = mySchool.Address; // 在多个连续的操作中重复使用对象 Console.WriteLine("School Name: " + schoolName); Console.WriteLine("School Address: " + schoolAddress); // 可以继续使用对象进行其他操作 mySchool.DoSomething();