如何將這段VB6代碼轉換爲C#?C#&VB6:如何將'with'語句轉換爲C#?
我已經試過我自己並得到了這麼遠:
編輯:代碼我正在翻譯中存在的位置: http://www.codeproject.com/KB/vb-interop/MouseHunter.aspx
如何將這段VB6代碼轉換爲C#?C#&VB6:如何將'with'語句轉換爲C#?
我已經試過我自己並得到了這麼遠:
編輯:代碼我正在翻譯中存在的位置: http://www.codeproject.com/KB/vb-interop/MouseHunter.aspx
您尚未顯示EventThief
代碼,這使得無法確切地說明。但總的來說:
With expression
.Foo = a
.Bar = b
End With
將轉化
var x = expression;
x.Foo = a;
x.Bar = b;
(當然你也可以明確地指定類型...)
這裏的共同點是expression
只計算一次。在你顯示的特定代碼中,當然不需要額外的變量,因爲表達式首先是局部變量只有。
你的實際錯誤看起來就像EventThief.RIGHT_DOWN
等類型,而不是WITH語句。
編輯:好的,你現在已經顯示原EventThief代碼確實使用布爾...但你還沒有表現出你的移植EventThief
代碼。您寫道:
它說et.LEFT_UP是一個短期
...但它不應該。在原來它是一個Boolean
,那麼爲什麼它是在您的端口short
?
有與C#中的With不等價,據我所知,當引用其成員函數/屬性時,需要明確列出對象。
沒有C#等價物。
像這樣
With EventStealingInfo
.RIGHT_DOWN = True
.RIGHT_UP = True
End With
成爲
EventStealingInfo.RIGHT_DOWN = true;
EventStealingInfo.RIGHT_UP = true;
你就不能更改LEFT_UP的類型是一個布爾?
看着你的代碼和你使用EventThief的方式,你可能想要使用一個標誌枚舉,所以你可以設置個別位,然後進行按位比較。
我得看看。謝謝! – Zolomon 2010-01-15 12:13:47
我也不太清楚,但我想在VB
With EventStealingInfo
.RIGHT_DOWN = True
.RIGHT_UP = True
End With
以下大致可以翻譯成
var EventStealingInfo = new EventThief(){
RIGHT_DOWN = true,
RIGHT_UP = true
};
其中RIGHT_UP
和RIGHT_DOWN
是在EventStealingInfo
類的公共屬性。
C#中的這個構造被稱爲Object Initializer。
@stakx:謝謝你指出。 – missingfaktor 2010-01-15 12:17:06
「with」關鍵字只是在設置多個屬性時保存重新輸入變量名稱的快捷方式。在C#中沒有等價物。
即使有您仍然有問題,你顯然是試圖分配一個布爾短數據類型的問題。
什麼是EventThief類?你可以簡單地使LEFT_UP字段爲布爾值嗎?
我認爲這是更接近你可以去:
EventThief EventStealingInfo = new EventThief()
{
RIGHT_DOWN = true,
RIGHT_UP = true
};
我會回答這個答案(除了它應該真的說'... = new EventThief()')。對象初始化器可能是最接近Visual Basic的'With'語句的東西。 – stakx 2010-01-15 12:14:42
ops,固定那個,ty – 2010-01-15 12:18:05
我可以叫你的建議選項A。
我可以建議選項B和選項C,我認爲這將是更容易?
選項B
1.首先Microsoft's C# code對付windows鉤子。
2.根據需要調整它,查看API稱爲VB6 code makes的API。
選項C
1.從community code利用內置VB6 DLL。
2.通過Interop從您的新C#應用程序調用該DLL。
我先嚐試了選項2,然後當第一個失敗時嘗試了選項3。那是當我在EventThief結構中遇到錯誤類型的錯誤時,所以我嘗試了選項1,並且遇到了另一個錯誤,它提到有關GUID錯誤的一些錯誤,並且我迷失在做什麼。 – Zolomon 2010-01-15 14:05:12
[C#相當於Visual Basic關鍵字的'可能的重複:'與'...'結束於'?](http://stackoverflow.com/questions/4174773/c-sharp-equivalent-for-visual-basic -key-end-with) – DaveInCaz 2016-09-06 15:32:22
@DaveInCaz也許把另一個作爲一個重複,那麼因爲這個問題之前問過那個? – Zolomon 2016-09-09 08:26:34