看來,我在VB.NET中編寫的擴展方法庫存在問題。重載在類庫中的VB.NET擴展方法
我有2重載的擴展方法裁剪()。
當我從VB.NET項目中引用lib時,我看到它們。如果從C#項目中引用它,我看不到它們。
這到底是怎麼回事?
看來,我在VB.NET中編寫的擴展方法庫存在問題。重載在類庫中的VB.NET擴展方法
我有2重載的擴展方法裁剪()。
當我從VB.NET項目中引用lib時,我看到它們。如果從C#項目中引用它,我看不到它們。
這到底是怎麼回事?
它的工作原理是這樣的:
out
或ref
參數,編譯器會要求你重複的調用參數的out
或ref
關鍵字。這是因爲這個變量是否已經被初始化對於語言來說確實很重要。ByRef
參數的方法時,編譯器不需要您在調用參數上重複ByRef
,它只是爲您排序。這是因爲變量是否已經被初始化與語言無關。因此,VB.NET可以很容易地解決使用ByRef
擴展方法,因爲僅存在一種可能的方式中,它可以被調用。但是,C#不知道該怎麼辦,因爲沒有語法來告訴它是否使用out
或ref
來調用方法。
所有你能做的就是:
ByVal
參數。沒有看到代碼,我的猜測是您在C#.cs文件中缺少using
聲明。
//other usings...
//Extension using statement...
using MyAssembly.Extensions;
class Program {
static void Main() {
//some code
String myString = "blah";
//call the extension method now
String newString = myString.MyExtensionMethod();
}
}
但是,這只是一個猜測,沒有看到你的代碼。
希望這有助於!
我的方法使用了byref參數。我改變它爲VAL,它的工作。
顯然這很奇怪。在VB項目中確定,但在C#中沒有。顯然C#不支持帶有byref的擴展方法,或者它是一個錯誤。
當你從c#調用方法時,你使用了ref關鍵字嗎? – 2010-07-20 14:16:37
喲如何使用ref關鍵字?示例代碼? – Tomasi 2010-07-20 15:11:04
地獄是什麼代碼? – Oded 2010-07-20 12:46:14
VB或VB.NET?標記[vb]代表Visual Basic(版本5,6) – abatishchev 2010-07-20 13:10:34
Plz測試場景以查看是否遇到同樣的問題。 – Tomasi 2010-07-20 13:56:57