2

我一直在用 C# 中的 WPF 应用程序玩很多东西,有很多东西对我来说不是很清楚,我一直在尝试查找它并尝试解决它,但没有太大的成功,因为英语是我的第二语言,我仍然不擅长术语和编程......

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

   this.AddChild(myGrid);

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

2:扩展课程??我最近一直在看很多java教程,只是为了了解更多关于编程的知识。在那里,要使用其他类的对象,您可以简单地编写:

   public class class1 extends class2{}

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

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

4

4 回答 4

2

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

  1. this表示类的当前实例。所以在每个类this中指代不同的对象。this通常可以省略,只是AddChild(myGrid)可以使用。
  2. extends(或:在 C# 中)意味着第一个类 ( class1) 从第二个 () 继承,class2因此可以访问class2未标记的方法和变量private
于 2013-07-30T11:26:30.430 回答
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' 作为面向对象上下文中的关键字的词源可以追溯到 1970 年代后期,当时它首次出现在 C++ 的早期规范中。

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

于 2013-07-30T12:31:49.343 回答
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
    }
}
于 2013-07-30T11:28:01.683 回答
1

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

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

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

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

于 2013-08-02T03:51:40.203 回答