1
-7
不,我不这么认为。 您使用的变量名是为了方便和可读性。编译器不需要它,如果我没有弄错的话,只需要把它扔掉。 如果它有帮助,您可以用属性name和param定义一个名为namedparameter的新类。然后将这个对象作为参数传递。 |
2
53
您想要的是不可能直接实现的,但您可以在C 3.0中使用表达式:
请注意,这依赖于未指定的行为,虽然它在Microsoft当前的C和VB编译器中工作, 和 在MonosC编译器中,不能保证在将来的版本中不会停止工作。 |
3
33
我知道这是一个古老的问题,但在C 6.0中,他们引入了应该解决这个问题的运算符的名称。运算符的名称解析传递给它的变量的名称。 您的案例的用法如下:
一个主要的好处是它是在编译时完成的,
可以找到更多信息 here
旧版本的C 3.0及更高版本
|
4
17
更多详细信息 this blog post . |
5
11
三种方式: 1)完全没有反射的东西:
2)使用反射,但这比其他两种方法更快。
3)最慢的,不要使用。
要获取组合参数名称和值,可以扩展这些方法。当然,如果将参数作为另一个参数单独传递,很容易获得值,但这是不雅的。而是: 1)
2)
3)
1和2现在的速度相当,3又慢了。 |
6
4
不,但是当你发现自己做了如此复杂的事情时,你可能会想重新考虑你的解决方案。记住,代码应该比写代码更容易阅读。 |
7
4
对! 这是可能的。我一直在寻找解决这个问题的方法,终于想出了一个解决这个问题的方法(有点讨厌)。我不建议将它作为程序的一部分使用,我认为它只在调试模式下工作。对我来说,这并不重要,因为我只将它用作控制台类中的调试工具,所以我可以这样做:
控制台的输出将是:
下面是我用来做这件事的函数(不包括控制台类的包装代码)。
|
8
2
system.environment.stacktrace将为您提供一个包含当前调用堆栈的字符串。您可以通过解析得到信息,其中包括每个调用的变量名。 |
9
2
试试这个实用类,
像这样使用
|
10
0
不。对字符串变量的引用将传递给funcion——其中不包含任何固有的metadeta。即使是反射也不能让你走出这片树林——从一个引用类型向后工作并不能让你获得足够的信息来做你需要做的事情。 最好回到这张画板上! RP |
11
0
您可以使用反射来获取对象的所有属性,而不是循环访问它,并获取名称(属性的名称)与传入参数匹配的属性的值。 |
12
0
谢谢你的回复。我想我现在要做的就是去做。 对于那些想知道我为什么问上述问题的人。我有以下功能:
我给它发送一个错误消息数组和一个CSS类,然后作为一个网页的字符串返回。 每次调用这个函数,我都必须定义Stype。类似:
如您所见,我的变量称为aerrors,而我的css类称为errors。我希望我的感冒能根据我发送的变量名找出要使用的类。 再次感谢所有的回复。 |
13
0
网关杀手,我的工作区怎么了?你可以重写你的函数来使用它(我已经自由地在运行中改进了函数):
这样称呼它:
|
14
0
这样做
或者用手工在代码中命名
使用这个类
经过代码测试,我能想到的最优雅的。 |
15
-1
简短的回答是不…除非你真的有动力。 实现这一点的唯一方法是通过反射和堆栈遍历。您必须得到一个堆栈框架,计算出从中调用的调用函数的位置,然后使用codedom尝试找到树的正确部分,以查看表达式是什么。 例如,如果调用是exampleFunction(“a”+“b”),该怎么办? |
16
-1
嗯,看了看。 当然 您不能使用任何类型信息。 此外,局部变量的名称在运行时不可用 因为它们的名称没有编译到程序集的元数据中。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |