C#WPF应用程序:什么是“这个”?

时间:2013-07-30 11:15:13

标签: c# wpf this extend

我在C#中使用WPF应用程序已经玩了很多,并且有许多事情对我来说并不是很清楚,我一直试图查找并使用它来解决它但没有太大的成功因为英语是我的第二语言,我在术语和编程方面仍然不是那么好......

1:主类中的“this”是什么?当我在XAML中创建新的WPF应用程序时,我得到了窗口和网格。但是,我非常不喜欢XAML,并且喜欢为我需要的所有元素和对象编写代码,因此我删除了第一个网格,创建了一个类,定义了我的网格并添加它我必须编写类似

的内容
   this.AddChild(myGrid);

这很好,但是如果我想在其他类的主类中使用“this”,那对我来说就变得有点复杂了。那么,哪个UIElement或Object是“this”?如何定义它以便可以在方法中使用? “这个”,我想是指在开始时创建的Window,但是那个窗口的UIElement或Object是什么?

2:扩展类?我最近一直在看很多java教程,只是为了更多地了解编程。在那里,要使用其他类中的对象,您只需编写:

   public class class1 extends class2{}

并且一切都很完美,我发现我可以在C#WPF中模仿同样的东西,除非它是主类,因为主类扩展:Window我想因为它被定义为部分类...有没有办法“扩展”多个班级还是绕过这个?

任何有关清除此事的帮助都会很棒:)

4 个答案:

答案 0 :(得分:2)

您应该在C#中学习面向对象的编程

  1. this表示该类的当前实例。因此在每个类中this指的是不同的对象。 this通常可以省略,只能使用AddChild(myGrid)
  2. extends(或C#中的:)表示第一个类(class1)继承自第二个类(class2),因此可以访问方法和变量在class2中定义的未标记为private

答案 1 :(得分:2)

对于关于'this'及其身份的部分,Window位于类的层次结构中,并且可以承担其任何祖先的身份。例如......

    public MainWindow()
    {
        InitializeComponent();
        var contentControl = this as ContentControl;
        var control = this as Control;
        var frameworkElement = this as FrameworkElement;
        var uiElement = this as UIElement;
        var dependencyObject = this as DependencyObject;
        var dispatcher = this as DispatcherObject;
    }

...此代码段中的所有作业都是合法的。此外,还有更多的外来任务,如

var x = this as IInputElement;

这里的关键是检查每个类可用的框架和各种分配。正如其他人所指出的,离线阅读对快速学习曲线至关重要。

“this”作为面向对象上下文中的关键词的词源可以追溯到20世纪70年代后期,当它首次出现在C ++的早期规范中时。

最后,由于很多原因,Xaml是WPF最吸引人的功能之一,如果Xaml与你的方法不兼容,你可能会在WinForms或Swing或类似的紧密绑定框架中变得更好。

答案 2 :(得分:1)

简单地说this就是你所在的班级。

例如

class dim
{
    int sum = 0;
    public void num(int sum){
        this.sum = sum; //Places the sum from num to the sum in dim
    }
}

答案 3 :(得分:1)

扩展类基本上称为面向对象编程中的继承。有几种类型的继承,如单一,多层,多层,层次,混合。但是C#和Java不支持来自多个类的入口,因为多重继承会产生很多歧义。

替换多重继承的功能是使用接口。而不是“从类扩展”,我们使用关键字“implements”实现一个接口。接口只是一个框架类,您可以在其中声明方法签名,接口将在您实现接口的类中实现。重要的是你可以实现多个接口

要概述继承和接口,以下链接会有所帮助:

http://msdn.microsoft.com/en-us/library/ms228387(v=vs.80).aspx