2017-03-06 48 views
0

我想問的是它去的,從一類到另一個在C#。這裏是一個什麼樣是我的想法的例子給出線可能:C#是否有可能從一個文件到另一個文件的給定行?

public class Class1 
{ 
    public void MethodFromClass1() 
    { 
    // Doing some operations before to go in the another class 
    goto: PlaceToGo 
    // Doing some operations after going in the another class 
    } 
} 

public class Class2 
{ 
    public void MethodFromClass2() 
    { 
    PlaceToGo: 
     Console.WriteLine("Print something."); 
    } 
} 
+6

如果你需要這樣做,那麼你會發現一切都是錯誤的。 C#是一種程序和麪向對象的語言。你應該熟悉這些範例。 –

+3

根據你在代碼中的意見,你只需要一個普通的方法調用,而不是典型的'goto'行爲只是去某個地方而不回來。 –

+2

我不想開始下一個「goto is evil」的討論,但是你在這裏嘗試的是針對C#的一切。只需調用MethodFromClass2即可。爲什麼要走? – Grisgram

回答

2

這是不使用goto運營商很好的做法。你應該避免它。

public void MethodFromClass1() 
{ 
    Class2 class2 = new Class2(); 
    class2.MethodFromClass2(); 
} 

另外,如果你連跳這個類,對象可能不是已經創建所以也沒有:你的情況,你可以通過另一種方式(的Class2創建實例並調用其方法)做說得通。

0

您可以轉到熟悉:https://msdn.microsoft.com/en-us/library/13940fs2.aspx

「跳」到不同的類沒有什麼太大的意義對我來說,因爲它從來沒有到「構建」之前。無論如何,我建議你不要在C#中使用這種技術,因爲它會使核心難以跟蹤和理解。

0

一個goto幾個合法的用途可能是在switch聲明:

// Though this is a very stupid example! 
int number = 0; 

switch (number) 
{ 
    case 0: 
     Console.Write("hello "); 
     goto case 1; 

    case 1: 
     Console.WriteLine("world!"); 
     break; 
} 

順便說一句,我從來沒有發現自己使用goto,和你的使用情況僅僅是一個荒謬的。

也許你想要的是一個事件,這是除了廣播heya!任何人,我都要做點什麼?和一些聽衆執行動作作爲對整個事件的回答。請看下面的代碼片段,以獲得進一步的細節:

public class Class1 
{ 
    private event EventHandler _BeforeDoingStuff; 
    private event EventHandler BeforeDoingStuff 
    { 
     add { _BeforeDoingStuff += value; } 
     remove { _BeforeDoingStuff -= value; } 
    } 

    public void DoStuff() 
    { 
    // Do some stuff 
    // Then fire the event 
    _BeforeDoingStuff?.Invoke(EventArgs.Empty); 
    // Continue with more stuff after firing the event 
    } 
} 

public class Class2 
{ 
    public Class2(Class1 class1) 
    { 
     class1.BeforeDoingStuff += (sender, e) => 
     { 
      Console.WriteLine("I did some stuff in the middle of Class1.DoStuff!"); 
     } 
    } 
} 

Class1 class1 = new Class1(); 
Class2 class2 = new Class2(class1); 

詳細瞭解事件在C#here

相關問題