c#里一个关于全局变量和局部变量的问题
WPF工程:
代码下载
此代码是学习自定义依赖属性的示例代码。
背景描述:
界面上有两个textbox,textbox1和textbox2
另外有一个具有依赖属性的类student。
student的Name属性和textBox1绑定,
textBox2和student绑定。
想实现的效果:在textBox1中输入内容textBox2会跟着变化。
下面是绑定部分的代码:
上面这样写没有任何问题,但是上面这段代码标记1处 声明student类对象的这句Student stu;如果放到构造函数里面,如下:
则出现了问题:
运行后在textBox1中输入内容,textBox2中得内容会有10个字符是跟着一起变的,其他的就不变了。截图如下:

目前分析:当Student stu;放到构造函数里面它就是局部变量,在构造函数走完之后它就不复存在了,这样的话在textBox1中输入内容textBox2中应该不会有任何内容才对。
然后我猜想是不是C#里内存自动回收机制搞的鬼?它过一会才把stu释放。如果是这样,那打开exe之后隔段时间再输入textBox2中应该不会有数据才对,但发现textbox2中还是有数据。
目前不知道是什么问题了,请大家帮忙分析一下~~
c#我接触不久,请大家多多指点。
代码下载
此代码是学习自定义依赖属性的示例代码。
背景描述:
界面上有两个textbox,textbox1和textbox2
另外有一个具有依赖属性的类student。
student的Name属性和textBox1绑定,
textBox2和student绑定。
想实现的效果:在textBox1中输入内容textBox2会跟着变化。
下面是绑定部分的代码:
public partial class MainWindow : Window
{
Student stu; //------------------------------------ 1
public MainWindow()
{
InitializeComponent();
stu = new Student();
stu.SetBinding(Student.NameProperty, new Binding("Text") { Source = textBox1 });
textBox2.SetBinding(TextBox.TextProperty, new Binding("Name") { Source = stu});
}
}上面这样写没有任何问题,但是上面这段代码标记1处 声明student类对象的这句Student stu;如果放到构造函数里面,如下:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Student stu; //------------------------------------ 1
stu = new Student();
stu.SetBinding(Student.NameProperty, new Binding("Text") { Source = textBox1 });
textBox2.SetBinding(TextBox.TextProperty, new Binding("Name") { Source = stu});
}
}则出现了问题:
运行后在textBox1中输入内容,textBox2中得内容会有10个字符是跟着一起变的,其他的就不变了。截图如下:

目前分析:当Student stu;放到构造函数里面它就是局部变量,在构造函数走完之后它就不复存在了,这样的话在textBox1中输入内容textBox2中应该不会有任何内容才对。
然后我猜想是不是C#里内存自动回收机制搞的鬼?它过一会才把stu释放。如果是这样,那打开exe之后隔段时间再输入textBox2中应该不会有数据才对,但发现textbox2中还是有数据。
目前不知道是什么问题了,请大家帮忙分析一下~~
c#我接触不久,请大家多多指点。
...全文
相关推荐
C#复习文档 基础知识 面试常问题
"C#复习文档 基础知识 面试常问题"本文档是面向对象编程语言C#的基础知识和面试常见问题的总结,涵盖了C#语言的基础知识和面试中常见的问题,旨在帮助程序员熟记于心的知识点。
全局变量、局部变量、静态全局变量、静态局部变量的区别
**可见性**:静态全局变量虽然具有全局作用域,但其可见性仅限于声明它的源文件,避免了全局变量可能带来的命名冲突问题。理解这些变量类型的特性对于编写清晰、模块化和健壮的代码非常重要。
全局变量与局部变量在内存中的区别详细解析
本文主要解析了全局变量与局部变量在内存中的区别,涉及C/C++程序内存分配的五个部分:栈区、堆区、全局区(静态区)、文字常量区和程序代码区,并通过一个示例程序进一步阐述了各种变量的存储位置。在C
Asp.net及C#全局变量使用方法汇总
"ASP.NET与C#全局变量的使用方法"在ASP.NET和C#编程中,全局变量是一种在整个应用程序范围内都可以访问的数据存储位置。它们允许开发者在不同的类和方法之间共享信息,这对于某些场景非常
C#中的局部变量冲突问题
C#局部变量冲突问题是指在同一个作用域内对同一个变量名重复声明导致的编译错误。


