通过c#处理对象

时间:2014-02-04 06:37:24

标签: c# winforms dispose

我想知道如果发生了什么:

 private void tbName_TextChanged(object sender, EventArgs e)
 {
   var s=sender as TextBox;
   s.Text="Hello";

   s.Dispose();

 }

这是管理一些活动的正确方法吗? 我不想写这样的东西:

if(textbox1.Text.Equals(textbox2.text))
  {...}

等等。

编辑:我喜欢写一些功能:

 public bool isTextEquals(Object sender,String text)
  {
    var s =sender as TextBox;
    if(s.Text.Equals(text))
         return true;
    return false;   
  }

这个功能能运作良好吗?可以在此代码中发生一些内存泄漏吗?

1 个答案:

答案 0 :(得分:2)

至少可以说,TextChanged事件的事件处理程序似乎很奇怪。在正常情况下,你不太可能做这样的事情。 有更方便的方法来访问引发事件的文本框。

例如:

private void tbName_TextChanged(object sender, EventArgs e)
{   
   tbName.Text="Hello";
}

在这种情况下,处理文本框是一个非常大的否定,因为您实际上会破坏正在使用的文本框,因此该语句的效果将不是您所期望的。 事实上,您很少需要关注.Net中的对象和控件的处理,因为框架在幕后为您管理这些对象时做得非常好。

现在就比较而言,这是完全合法的,而且更具可读性:

var comparisonResult = sometextbox.Text == "Some text i want to compare";

等于运算符==将为您完成工作,以后将更容易阅读和维护。 If Statement无需弄乱。

在旁注中,我建议您获取一些介绍性的.Net和C#书籍,以便更好地理解框架及其功能。

希望这有帮助。