C# 获取值指针并从其他地方使用它 首先,我是C++开发人员,对C是新手,很抱歉这个简单的问题。 我正在为本机库创建包装器 我想在类中传递一个值,并从类中的其他函数编辑它,比如C++中的指针,我发现它可以用不安全的模式来完成,但是我需要在不安全的情况下完成它,我确信它是可能的。 这是我的密码:
主控制台 表格代码 不幸的是,它不能正常工作,所以我需要将我的字符串、int等值传递给一个新的表单,在初始化表单时,表单会创建一个指向原始字符串的实例[like pointer],并且可以从类中的其他函数(如button click)访问它 谢谢。你已经有了一个参考(有点像指针),这就是你的问题(好吧,至少有一半) 表示创建一个保存字符串引用的变量(因为字符串是不可变的引用类型),并将当前在_obj中的引用C# 获取值指针并从其他地方使用它 首先,我是C++开发人员,对C是新手,很抱歉这个简单的问题。 我正在为本机库创建包装器 我想在类中传递一个值,并从类中的其他函数编辑它,比如C++中的指针,我发现它可以用不安全的模式来完成,但是我需要在不安全的情况下完成它,我确信它是可能的。 这是我的密码:,c#,C#,主控制台 表格代码 不幸的是,它不能正常工作,所以我需要将我的字符串、int等值传递给一个新的表单,在初始化表单时,表单会创建一个指向原始字符串的实例[like pointer],并且可以从类中的其他函数(如button click)访问它 谢谢。你已经有了一个参考(有点像指针),这就是你的问题(好吧,至少有一半) 表示创建一个保存字符串引用的变量(因为字符串是不可变的引用类型),并将当前在_obj中的引用data_复制到它。然后在新的中重新分配数据时,它当然不会影响任何其他变量(就像在C++中
data_复制到它。然后在新的
中重新分配数据时,它当然不会影响任何其他变量(就像在C++中一样)
因为字符串是不可变的,所以该代码无法影响指向该字符串的其他内容(通过引用传递,但这是关于变量/成员的)。您需要将其存储在一个简单的结构或类中,以便每个人都指向一个包含当前字符串引用的对象,并且可以进行更新
与您的int
相同,它实际上是一种值类型,因此任何副本都将复制实际值,您不能通过它更改不同的变量。您需要一个包装器类,以便每个用户都指向同一个对象。您已经有了一个引用(有点像指针),这就是您的问题(好吧,至少有一半)
表示创建一个保存字符串引用的变量(因为字符串是不可变的引用类型),并将当前在_obj
中的引用data_复制到它。然后在新的
中重新分配数据时,它当然不会影响任何其他变量(就像在C++中一样)
因为字符串是不可变的,所以该代码无法影响指向该字符串的其他内容(通过引用传递,但这是关于变量/成员的)。您需要将其存储在一个简单的结构或类中,以便每个人都指向一个包含当前字符串引用的对象,并且可以进行更新
与您的int
相同,它实际上是一种值类型,因此任何副本都将复制实际值,您不能通过它更改不同的变量。您需要一个包装类,以便每个用户都指向同一个对象。既然您已经在初始化表单,那么设置一个简单的get和set函数怎么样
以您的形式:
private string data_in_new = "";
public Data_Picker_Form(string DATA_VALUE)
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Data_in_new = "OUTPUT_VALUE";
Close();
}
public string Data_in_new
{
get
{
return data_in_new;
}
set
{
data_in_new = value;
}
}
在您的控制台中:
class Program
{
static void Main(string[] args)
{
string DATA_VALUE = "Not Set Yet";
Data_Picker_Form D_P_T = new Data_Picker_Form(DATA_VALUE);
D_P_T.ShowDialog();
DATA_VALUE = D_P_T.Data_in_new;
Console.WriteLine("Value is {0}", DATA_VALUE);
Console.ReadKey();
}
}
通过这种方式,您可以在项目中的任何所需点访问您的值。既然您已经在初始化表单,那么设置一个简单的get和set函数怎么样
以您的形式:
private string data_in_new = "";
public Data_Picker_Form(string DATA_VALUE)
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Data_in_new = "OUTPUT_VALUE";
Close();
}
public string Data_in_new
{
get
{
return data_in_new;
}
set
{
data_in_new = value;
}
}
在您的控制台中:
class Program
{
static void Main(string[] args)
{
string DATA_VALUE = "Not Set Yet";
Data_Picker_Form D_P_T = new Data_Picker_Form(DATA_VALUE);
D_P_T.ShowDialog();
DATA_VALUE = D_P_T.Data_in_new;
Console.WriteLine("Value is {0}", DATA_VALUE);
Console.ReadKey();
}
}
通过这种方式,您可以在项目中的任何期望点访问您的值。这里有一个很好的资源,我认为它与此问题有关字符串在C#中是不可变的。这里有一个很好的资源,我认为它与此问题有关字符串在C#中是不可变的。Mike的答案更简单、更好,但您的答案也很好,谢谢!迈克的答案更简单更好,但你的答案也很好,谢谢!
class Program
{
static void Main(string[] args)
{
string DATA_VALUE = "Not Set Yet";
Data_Picker_Form D_P_T = new Data_Picker_Form(DATA_VALUE);
D_P_T.ShowDialog();
DATA_VALUE = D_P_T.Data_in_new;
Console.WriteLine("Value is {0}", DATA_VALUE);
Console.ReadKey();
}
}