在一个方法中,它会滚动离开屏幕。为了让我在编程时更轻松,如果我想引用类的变量,我可以使用Me
或this
对象,具体取决于我使用的语言。
eg. Me.var1 = "Hello"
是否有一个对象(如Me
)可以轻松引用函数的参数?
eg. params.par1 = "World"
答案 0 :(得分:6)
该语言中没有此类功能。局部变量和方法参数由.NET抖动专门处理,它们在运行时严重优化。 .NET会做什么,或者你会做什么来捕获这些变量都会使这种优化失败。
一个非常简单的解决方案是使用Window + Split,它为您提供了两个代码视图。将顶部的一个滚动到方法标题,将代码写在底部。您可以调整分割器,在底部窗口中为您提供更多空间。
利用IntelliSense将是另一种方式。使用一个小字符串作为参数名称的前缀,例如“par”。然后在代码中键入“par”会自动为您提供IntelliSense弹出窗口中的参数名称列表。
然而,这些只是真正问题的创可贴。一旦你发现自己达到这样的目的,你的第一个想法应该是将函数中的代码拆分以使其变小。经过三十年的编码,我发现了一些难以理解的事实:答案 1 :(得分:0)
简短的回答是否定的。看起来您希望使用它来区分函数参数和具有相同名称的字段的参数范围和类范围,遗憾的是您不能。使用不同的命名方案,或执行以下操作:
public class MyClass {
private string myString;
private int myInt;
public MyClass(string myString) {
this.myString = myString;
}
public int DoStuff(int myInt) {
this.myInt += myInt;
return this.myInt;
}
}
要非常清楚并避免出现问题,您可以更改名称:
public class MyClass {
private string m_myString;
private int m_myInt;
public MyClass(string myString) {
m_myString = myString;
}
public int DoStuff(int myInt) {
m_myInt += myInt;
return m_myInt;
}
}
你应该首先在代码之前编写测试,然后你可以检查你的代码中是否有意外混淆了。
<强>脚注强>
我包括这个,因为来到这个问题标题的人可能正在寻找以下信息。
当你说
时为了便于编程 - 如果我在一个函数中走了很长一段路,我想看看有什么参数而不必向上滚动
如果你真的想从代码中查看你的参数是出于其他原因那么你需要反思。这很慢,它的典型用途是找到一个方法,然后反映该方法中的参数。有关非常全面的示例,请参阅MSDN - ParameterInfo Class。代码的相关部分是:
foreach (MemberInfo mi in typeof(MyClass).GetMembers() )
{
// If the member is a method, display information about its parameters.
if (mi.MemberType==MemberTypes.Method)
{
foreach ( ParameterInfo pi in ((MethodInfo) mi).GetParameters() )
{
Console.WriteLine("Parameter: Type={0}, Name={1}", pi.ParameterType, pi.Name);
}
}
答案 2 :(得分:0)
您应该能够使用GetParameters()
反射方法
MethodInfo barMI = bar.GetMethod("Foo");
ParameterInfo[] pars = barMI.GetParameters();
foreach (ParameterInfo p in pars)
{
Console.WriteLine(p.Name);
}
您可以在运行时使用它。但是为了你的目标,我会尝试重构函数及其名称的数量。我尝试将代码长度保持在每行80个符号以下,并将类中的行数保持在100以下。这并不总是可行的,但这是一个很好的目标,可以解耦并简化类。
答案 3 :(得分:0)
一种简单的方法是将您的参数封装在一个对象中,这样您就可以引用它,而intellitype(或任何预测功能)会向您显示您可用的属性,而无需向上滚动。喜欢这个
public class MyParamObject{
public string FirstParam {get;set;}
public string SecondParam {get;set;}
}
然后你可以从
改变你的方法public void MyReallyOvergrownMethod(string firstParam, string secondParam){...
到
public void MyReallyOvergrownMethod(MyParamObject params){...
然后你可以在方法
中使用这样的params参数//Deep inside the method
if(params.FirstParam == "SomeValue"{//Do something
这是解决问题的一个简单解决方案,通过重构您的方法可以最好地解决这个问题。查看循环和条件,并将它们分成独立的私有方法,这些方法以它们的命名命名。如果您搜索cleancoders,就会有大量内容。
答案 4 :(得分:0)
根据你的评论“只是为了方便编程 - 如果我在一个函数中很长一段时间我想看看有什么参数而不必向上滚动”:在Visual Studio中,代码显示,只是在滚动条上方有一点你可以抓住并拉下来拆分窗口。然后,您可以在一个窗格中显示您的函数声明,并在另一个窗格中滚动任意多个。或者您可以使用窗口菜单 - >分割。