C# 面试题
目录

C# 中 Caller Information 特性的用法 (如:CallerMemberName)

· 约 3 分钟读完 · 第 72 / 183 章

推荐答案

本题详细解读

Caller Information 特性概述

C# 中的 Caller Information 特性允许开发者在编译时获取调用者的信息,如调用者的方法名、文件路径和行号。这些特性是通过在方法的参数上应用 [CallerMemberName]、[CallerFilePath] 和 [CallerLineNumber] 属性来实现的。

特性详解

  1. [CallerMemberName]
    该特性用于获取调用当前方法的成员名称。通常用于日志记录、调试或实现某些依赖调用者名称的功能。

  2. [CallerFilePath]
    该特性用于获取调用当前方法的源文件路径。这在调试时非常有用,可以快速定位到调用代码的位置。

  3. [CallerLineNumber]
    该特性用于获取调用当前方法的代码行号。结合 [CallerFilePath],可以精确定位到调用代码的具体位置。

使用场景

  • 日志记录:在日志中记录调用者的方法名、文件路径和行号,便于调试和追踪问题。
  • 属性更改通知:在实现 INotifyPropertyChanged 接口时,使用 [CallerMemberName] 可以避免硬编码属性名称。
  • 调试信息:在调试时,自动获取调用者的信息,减少手动输入的工作量。

注意事项

  • Caller Information 特性只能在可选参数上使用,且参数必须提供默认值。
  • 这些特性在编译时由编译器填充,因此在运行时不会影响性能。
  • 如果调用者信息无法获取(例如在动态调用或反射调用时),编译器会使用参数的默认值。