簡體   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