2010-10-10 32 views
13

Aşağıdaki C# kodum var.C# nesnesi nasıl kullanılır?

namespace MyMath { 
    public class Arith { 
     public Arith() {} 
     public int Add(int x, int y) { 
      return x + y; 
     } 
    } 
} 

Bu nesneyi kullanmak için testcs.fs adlı F # kodu ile geldim.

open MyMath.Arith 
let x = Add(10,20) 

aşağıdaki komutu

 
fsc -r:MyMath.dll testcs.fs 

Bu hata mesajı var çalıştırdığınızda.

 
/Users/smcho/Desktop/cs/namespace/testcs.fs(1,13): error FS0039: The namespace 'Arith' is 
not defined 

/Users/smcho/Desktop/cs/namespace/testcs.fs(3,9): error FS0039: The value or constructor 
'Add' is not defined 

Neyin yanlış olabilir? .NET ortamı için mono kullanıyorum. Arith yana

cevap

15

Kodunuzdaki

open MyMath 
let arith = Arith() // create instance of Arith 
let x = arith.Add(10, 20) // call method Add 

arith sınıf isim, ad gibi açamazsınız olduğunu deneyin. onun fonksiyonları açıkken yeterlilik

+0

İyi çalışıyor. Teşekkürler. – prosseek

7

bunu açamıyor, bir sınıf ve bir ad alanıdır. Bunun yerine bunu yapabilirsiniz:

open MyMath 
let x = Arith().Add(10,20) 
+0

İyi çalışıyor. Teşekkürler. – prosseek

3

olmadan kullanılabilecek şekilde Muhtemelen F # modüllerini açmak için yeteneği ile karıştı, yalnızca açık ad (benzer anahtar kelimeyi kullanarak C# kadar) modülleri bulunmaktadır edebilirsiniz. Ad alanları, ad alanı anahtar sözcüğüyle tanımlanır ve C# ve F # öğelerinde aynı şekilde davranılır. Ancak, modüller aslında sadece statik üyelere sahip sadece statik sınıflardır - F # sadece sizden gizler. Eğer reflektör ile bir F # koduna baktığımızda

, kendi modül statik sınıf olarak derlenmiştir olduğunu göreceksiniz. Eğer C# yaparım gibi - yalnızca F # modül olarak statik sınıfları kullanmak ve örnekte bu nedenle , sınıf kullanmak için bunu, bir nesne örneğini oluşturmak zorunda, statik değildir.

İlgili konular