gpt4 book ai didi

c# - 需要像 python 中的本地人这样的东西

转载 作者:太空宇宙 更新时间:2023-11-03 22:19:56 25 4
gpt4 key购买 nike

它是这样工作的:

>>> def foo(arg): 

... x = 1
... print locals()
...
>>> foo(7)
{'arg': 7, 'x': 1}
>>> foo('bar')
{'arg': 'bar', 'x': 1}

我在 c# .net 中需要这样的东西,或者如何自己实现它?

最佳答案

这是不可能的。其他答案为您提供了有关如何检索局部变量集及其类型的想法,但肯定不是它们在执行时的当前值。 C# 或 .NET 中没有这方面的规定。方法参数也是如此:您可以检索它们的类型(甚至它们的名称),但不能检索它们的值。

请允许我建议,如果您需要这个,您的代码设计存在严重缺陷。您应该考虑重新考虑您的代码结构。

作为变通方法,您可以声明一个,其中包含字段,而不是您想要的局部变量。然后您可以使用反射来迭代这些字段:

foreach (var field in typeof(MyClass).GetFields())
Console.WriteLine("Field name: {0}; field value: {1}",
field.Name, field.GetValue(myInstance));

但是,我认为您可以很容易地看出这不是一个非常健壮的代码:任何时候您对该类进行更改,您在此代码片段中所做的隐含假设都可能会失效。

在 C# 中传递关联数据的标准推荐方法是 Dictionary<,> .这相当于 Python 的 dict .您可以使用 Dictionary<string, object>如果您需要名称作为键和任意对象作为值,但如果您使用比 object 更具体的类型,您将受益于编译时有效性检查.

关于c# - 需要像 python 中的本地人这样的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3504118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com