繁体   English   中英

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

[英]C# WPF application: What is “this”?

我一直在使用C#中的WPF应用程序进行很多操作,很多事情对我来说还不是很清楚,我一直在尝试查找并尝试解决它,但是由于英语不够成功我的第二种语言,我对术语或编程仍然不满意...

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

   this.AddChild(myGrid);

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

2: 扩展类? 最近,我一直在看很多Java教程,只是为了学习更多有关编程的知识。 在那里,要使用其他类的对象,您只需编写以下代码:

   public class class1 extends class2{}

而且一切都非常完美,我发现我可以在C#WPF中模仿相同的东西,除非它是主类,因为主类扩展了:Window,而且我猜因为它被定义为局部类...有没有一种方法可以“扩展”还是要多课?

任何有关清除此问题的帮助都将非常棒:)

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

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

对于“ 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”作为关键字的词源可追溯到1970年代末,当时它首次出现在C ++的早期规范中。

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

简单地说, this是您所在的班级。

举个例子

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

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

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

要获得有关继承和接口的概述,以下链接将很有帮助:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM