【问题标题】:Getting field value by class instance通过类实例获取字段值
【发布时间】:2019-04-21 14:59:25
【问题描述】:

我学习用 C# 编写代码,我想知道是否有一个选项可以仅通过使用实例名称来获取类内字段的值。我希望它看起来像这样:

class foo{
   public Int32 field = 35;

   //Code i need... 
} 

public static void Main() {
   foo instance = new foo();
   Console.WriteLine(instance);
}

输出将是“25”。那么有什么方法可以使这样的代码工作还是我需要使用例如属性?

【问题讨论】:

  • 您不应使用公共字段。改用属性。
  • 如果您有多个字段或属性怎么办?然后应该打印什么到控制台?
  • 不会有。我的班级只有一个字段和一些方法。
  • 如果你想打印你的类的所有属性,你可以重写ToSpring() 方法来做到这一点。然后,Console.WriteLine 将调用此类方法并打印您想要的内容。这是来自 Microsoft 的文档:docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…

标签: c# class field instance


【解决方案1】:

不,除非您指定要访问的字段或属性,例如instance.field,否则没有。虽然您可以覆盖 ToString() 方法来打印该值,例如

public override string ToString()
{
  return field.ToString();
}

所以现在你可以说

public static void Main() {
   foo instance = new foo();
   Console.WriteLine(instance); // will print 35
}

【讨论】:

  • 您不需要调用ToString()Console.WriteLine() 有一个重载版本,它采用object 并调用其ToString() 方法。只需Console.WriteLine(instance);
  • 你可能想写field.ToString()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
  • 2021-01-26
  • 2022-01-07
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多