C# 如何调用引用类参数的方法?
所以我一直在想如何让我的代码通宵工作。我一直在阅读各种各样的东西,试图找出我做错了什么,但我尝试的每件事最终都是在同一个问题上。我试图通过在方法中引用来更改类中的变量,这样它将在类中而不仅仅是本地更改。但是我不知道把什么作为ref故事板SB的参数。有人能告诉我应该怎么做吗?我已经尝试过将它设置为null,即使是通过一个变量,它也不起作用。另外,“故事板”是我正在编写代码的类C# 如何调用引用类参数的方法?,c#,winforms,C#,Winforms,所以我一直在想如何让我的代码通宵工作。我一直在阅读各种各样的东西,试图找出我做错了什么,但我尝试的每件事最终都是在同一个问题上。我试图通过在方法中引用来更改类中的变量,这样它将在类中而不仅仅是本地更改。但是我不知道把什么作为ref故事板SB的参数。有人能告诉我应该怎么做吗?我已经尝试过将它设置为null,即使是通过一个变量,它也不起作用。另外,“故事板”是我正在编写代码的类 public class StoryBoard { public string[] TextBoxes = new
public class StoryBoard
{
public string[] TextBoxes = new string[10];
public int Counter = 0;
private void RtClickButton_Click(object sender, EventArgs e)
{
RtClickButton_ClickImpl(sender, e, "what would I put here?");
}
private void RtClickButton_ClickImpl(object sender, EventArgs e, ref StoryBoard SB)
{
string TBT = TxtBox.Text;
switch(Counter)
{
case 0:
TextBoxes[Counter] = TBT;
break;
}
SB.Counter++; // Adds 1 to the counter.
LtClickButton.Enabled = true;
TxtBox.Clear(); // Clears the text box.
}
}
简单地尝试
Counter++;
或者,如果有疑问,您可以使用this
关键字来引用此类的实例成员,例如
this.Counter++; // Adds 1 to the counter.
在此基础上展开,当前对象中的所有变量将始终可以在普通方法中访问(即非静态),除非相同范围中存在同名变量,其中范围可以是方法或大括号之间的单个块
如果使用this
关键字,它将始终引用属于对象/类的变量,而不是在不同范围内定义的内联变量
但是我不知道把什么作为ref故事板SB的参数
为某人保留一个私有成员变量:
private StoryBoard _SB = null; //A member variable to hold the StoryBoard object
public class Form1WhatEver
{
public Form1WhatEver()
{
//Instantiate a reference to the StoryBoard and hold it in the private member variable
_SB = new StoryBoard();
}
public string[] TextBoxes = new string[10];
public int Counter = 0;
private void RtClickButton_Click(object sender, EventArgs e)
{
RtClickButton_ClickImpl(sender, e, ref _SB); //Pass the instance of StoryBoard byRef.
//Check that our _SB Counter variable was incremented (+1)
System.Diagnostics.Debug.WriteLine(_SB.Counter.ToString());
}
private void RtClickButton_ClickImpl(object sender, EventArgs e, ref StoryBoard SB)
{
string TBT = TxtBox.Text;
switch(Counter)
{
case 0:
TextBoxes[Counter] = TBT;
break;
}
SB.Counter++; // Adds 1 to the counter.
LtClickButton.Enabled = true;
TxtBox.Clear(); // Clears the text box.
}
这也是在C#中,您试图更改哪个变量?我猜
计数器
?所有这些代码都属于类情节提要?@SirRufo是的does@Donut那么您的代码示例也应该说明这一事实——我刚刚编辑了您的问题。请复习一下我们知道怎么做:SB.Counter++;//将1添加到计数器。
您应该添加一个事实,即在这种情况下不需要ˋrefˋ。我很高兴您提到了它,我并不想详细介绍Value&ref类型以及ByVal和ByRef参数。我能读懂它。“这是一个比这个问题更重要的话题。”Donut read和Jon Skeet的答案以及him@SirRufo我添加了您所说的内容,但唯一的问题是,在我需要实例化引用的方法中,我在运行程序时得到了stackOverflowException。该方法内部是initializeComponent();当我将鼠标悬停在它上面时,它会显示“设计器支持所需的方法-不要使用代码编辑器编辑此方法的内容”。因此,我删除了引用代码,它再次工作,但我如何才能引用故事板?我还读了你发布的链接,非常有用,谢谢:)另外,我不知道这是否重要,但我正在制作一个windows窗体project@JeremyThompson我意识到我在评论中提到了错误的人