[英]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#中的面向对象编程
this
意味着该类的当前实例。 因此,在每个类中, this
指的是一个不同的对象。 this
通常可以省略,并且只是AddChild(myGrid)
都可以使用。 extends
(或:
在C#中)意味着第一个类( class1
)从第二个class2
( class2
)继承,因此可以访问在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.