C# 获取值指针并从其他地方使用它 首先,我是C++开发人员,对C是新手,很抱歉这个简单的问题。 我正在为本机库创建包装器 我想在类中传递一个值,并从类中的其他函数编辑它,比如C++中的指针,我发现它可以用不安全的模式来完成,但是我需要在不安全的情况下完成它,我确信它是可能的。 这是我的密码:

C# 获取值指针并从其他地方使用它 首先,我是C++开发人员,对C是新手,很抱歉这个简单的问题。 我正在为本机库创建包装器 我想在类中传递一个值,并从类中的其他函数编辑它,比如C++中的指针,我发现它可以用不安全的模式来完成,但是我需要在不安全的情况下完成它,我确信它是可能的。 这是我的密码:,c#,C#,主控制台 表格代码 不幸的是,它不能正常工作,所以我需要将我的字符串、int等值传递给一个新的表单,在初始化表单时,表单会创建一个指向原始字符串的实例[like pointer],并且可以从类中的其他函数(如button click)访问它 谢谢。你已经有了一个参考(有点像指针),这就是你的问题(好吧,至少有一半) 表示创建一个保存字符串引用的变量(因为字符串是不可变的引用类型),并将当前在_obj中的引用data_复制到它。然后在新的中重新分配数据时,它当然不会影响任何其他变量(就像在C++中

主控制台

表格代码

不幸的是,它不能正常工作,所以我需要将我的字符串、int等值传递给一个新的表单,在初始化表单时,表单会创建一个指向原始字符串的实例[like pointer],并且可以从类中的其他函数(如button click)访问它

谢谢。

你已经有了一个参考(有点像指针),这就是你的问题(好吧,至少有一半)

表示创建一个保存字符串引用的变量(因为字符串是不可变的引用类型),并将当前在_obj中的引用
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();
   }
  }