2012-10-21 28 views
1

剛剛完成我的學業的第一部分時,我正在尋找工作。我去了一個C#.net開發者的採訪。在採訪中,我被要求創建一個有兩個屬性的類。然後在一個asp.net表單中創建一個該類的對象。所以我創建了一個帶有兩個字符串的構造函數的類,並設置了對象的屬性。在asp.net頁面中,我添加了兩個文本框和一個按鈕。在按鈕的點擊方法中,我放在線Class whatever = new Class(textbox1.text, textbox2.text)C#.Net Interview從類中創建一個對象

所以在我看完以後,我看看正在採訪我的那些先生們,想知道他們爲什麼像我瘋了一樣看着我。所以我問,「你不認爲這會起作用?」他們回答說:「運行它,我們會看到」。好的,所以我運行了程序,在文本框中輸入了一些文本並單擊了按鈕。猜猜看,什麼都沒有發生。我說:「如果你願意,我可以把對象輸出到一些標籤或任何你想要的東西。」他們說,他們看着我就像我做錯了什麼,「不,只是在這條線上劃一個斷點,再次運行程序。」所以我們再次運行程序,斷點顯示對象是用文本創建的。然後我聽到「嗯,那有效」。當時我對他們說,「你們是在和我搞砸還是你真的認爲那樣做不行?」他們回答說,我當時只是創造一個對象的一種非常古老的方式。是否有其他方法來創建對象?我該怎麼做?我在所有的編程課程中教過,要從課堂上創建一個對象,這是正確的方法。有沒有人有任何想法這些傢伙想從我?也許在接下來的採訪中,我不會再這樣陷入困境。

感謝您的幫助,

克雷格

+4

我給你推薦這爲[programmers.stackexchange.com(programmers.stackexchange.com) – codingbiz

+0

是什麼programmers.stackexchange.com? –

+2

嘗試網址並查看;-) – dash

回答

3

請注意,構造函數是實例化對象的唯一方法。有不同的方式可以達到它,但最終構造函數總是被調用。你實例化它很好。

這引發了我兩個問題:

  1. 你誤解了問題和錯誤在這裏接力呢?
  2. 面試官是否真的很笨?

如果是數字1,運氣不好。
如果是2號,如果我是你的話,如果你被提供的話,我不會接受那份工作!

一些方法來構造一個對象:

// Default constructor: 
MyClass instance = new MyClass(); 

// overloaded constructor: 
MyClass instance = new MyClass(val1, val2, valN); 

// object initialiser constructor: 
MyClass instance = new MyClass 
{ 
    Val1 = val1, 
    Val2 = val2 
}; 

// runtime with given type 
Type myClassType = typeof(MyClass); // this would be more dynamic (unknown at design time) 
MyClass instance = Activator.CreateInstance(myClassType) as MyClass; 

// runtime with reflection 
Type myClassType = typeof(MyClass); 
ConstructorInfo cstr = type.GetConstructor(Type.EmptyTypes); 
MyClass instance = cstr.Invoke(new object[]()) as MyClass; 
+0

謝謝,我有一些新的研究,我知道的前3個,我需要研究的最後3個。 –

+0

@CraigSmith不要忘記upvote和標記爲正確:) –

1

對象可以以不同的方式創建,但我想他們應該已經給你機會來看你

之前創造的方式編號的對象,你知道

這裏是一個

SomeClass whatever = new SomeClass 
{ 
    property1 = textbox1.Text, 
    property2 = textbox2.Text 
} 

或者

SomeClass whatever = new SomeClass(); 
whatever.property1 = textbox1.Text; 
whatever.property2 = textbox2.Text; 

第一個示例是最近的

+0

但你仍然需要SomeClass whatever = new SomeClass();這就是這兩個人遇到問題的地方。 –

+0

如何:'Activator.CreateInstance(typeof(SomeClass));' –

+0

第一個例子是語法糖:無參數構造函數仍然被調用。 @Craig我總覺得很難相信「創造一個客體」是整個面試問題。當然,除此之外還有更多嗎? – Adam