You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将EndOfFile和DataRange变量赋值为其所在行号?

嘿Scott,我来帮你搞定把EndOfFile和DataRange设为它们所在行号的问题~不同编程语言的实现方式略有不同,我给你整理了几种常见语言的解决方案:

Python 实现方案

Python可以借助inspect模块来动态获取当前代码行的行号,写个简单的辅助函数就能轻松实现:

import inspect

def get_current_line():
    # 获取调用该函数的代码行号
    return inspect.currentframe().f_back.f_lineno

# 这行的行号会被赋值给EndOfFile
EndOfFile = get_current_line()

# 这行的行号会被赋值给DataRange
DataRange = get_current_line()

原理说明:inspect.currentframe()获取当前函数的栈帧,f_back跳转到调用这个函数的上层栈帧,再通过f_lineno拿到对应的行号,这样变量赋值时调用函数,就能直接获取所在行的行号啦。

C# 实现方案

C#里可以利用System.Diagnostics.StackFrame类来获取行号,不需要额外写辅助函数,直接一行搞定:

using System.Diagnostics;

// 直接获取当前行的行号赋值给EndOfFile
int EndOfFile = new StackFrame(0, true).GetFileLineNumber();

// 同理获取DataRange所在行的行号
int DataRange = new StackFrame(0, true).GetFileLineNumber();

原理说明:StackFrame(0, true)表示获取当前执行的栈帧,第二个参数true表示启用文件信息的获取,GetFileLineNumber()就能返回当前代码行的行号。

Java 实现方案

Java可以通过Throwable的堆栈跟踪来获取行号,写法也很简洁:

public class LineNumberDemo {
    public static void main(String[] args) {
        // 获取当前行号赋值给EndOfFile
        int EndOfFile = new Throwable().getStackTrace()[0].getLineNumber();
        
        // 获取当前行号赋值给DataRange
        int DataRange = new Throwable().getStackTrace()[0].getLineNumber();
    }
}

原理说明:new Throwable().getStackTrace()会返回当前的堆栈跟踪数组,第一个元素(索引0)就是当前执行的代码帧,调用getLineNumber()就能拿到对应的行号。

小提醒

这些方法都是运行时动态获取行号,如果后续代码行发生增减,行号会自动更新,不需要手动修改。如果只是需要固定的行号,直接写数字赋值就好啦~

内容的提问来源于stack exchange,提问作者Scott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:17:28