2010-01-24 27 views
13

C# toplanması, örneklerin dışında herhangi bir yararlı başvuru kaynağı bulacaktır.C# 'de VB'nin "Dim" ifadesinin karşılığı nedir?

Peki, Dim # içinde nedir?

+1

VB.net'in Dim'inin C# eşdeğerini soruyor musunuz? Bu konu için – spender

+0

, dünyadaki 'Dim' VB.NET'te ne anlama geliyor? Ne için kullanıldığını biliyorum ama hala ne anlama geldiğini bilmiyorum. –

+0

@Ben Dim, – PeanutPower

cevap

18

VB'de Dim, belirli bir türden (veya belirtilmemişse, değişken türden) bir değişken bildirir. Dim x as Foo, x adı verilen Foo türünde bir değişken bildirir. Ayrıca aynı adımda atayabilirsiniz

Foo x; 
int i; 

: C# '

, eşdeğer olduğu gibi, değişkenin adının başına tipini etmektir

Foo x = new Foo(); 
int i = 6; 

C# tipi çıkarım destekler bunu da yapabilirsiniz: VB bir ilgili türün olmadan

// Compiler infers type of x and i based on this assignment. 
var x = new Foo(); // x is now of type Foo 
var i = 10;  // i is now of type int 

A Dim benzerdir C# Object olarak bir tür ilan etmek:

object o = ...; // An object instance can hold any value or reference type. 
+1

evet, ancak var LINQ için çoğunlukla getirildi ve eğer var Var Var = 500; MyVar = "Dize Değiştir"; 'Bir hata alacaksınız. Diğer diller bu kısıtlamaya sahip değil –

+0

Son, örtük olarak yazılan bir değişkenin örneğidir; Yazım tipi farklıdır. – jason

+1

@Roboto: C# büyük ölçüde statik olarak yazılmıştır.Tanımladığınız şeyi yapamazsınız çünkü bir değişkenin türü değişmez değildir: bir tür olarak bildirdiğinizde, bu şekilde kalır. @Jason: Kapalı yazım, tür çıkarsama olmadan gerçekleşemez. Oldukça yakından bağlantılılar. Esas olarak, yazım çıkarımı "sağ tarafta" ne olur, böylece derleyici belirli bir türe bağlanabilir. –

1

benzer eşdeğer

object Obj; 

veya

int myInt; 
string myString; 

var

da dolaylı olarak kullanılan yazılmış olan gibi herhangi bir başka veri türü gibi olur. Diğerleri açıkça yazılmıştır. LINQ sorguları için var tanıtıldı.

16

Eğer VB Dim demek olduğunu varsayarsak, C# kullanan ya var veya türünün adı yeni tip var kelime VB gibi bir varyant tipi olmadığını

string myString = "Hello"; 
// is the same as 
var myString = "Hello"; // type is inferred 

Not ilan etmek. Bu bir implicitly typed variable.

0

Dim, VB.NET'te kullanılan değişkenlerin bildirimi için kullanılan bir anahtar sözcüktür. C# 'da herhangi bir kullanım hakkında bilmiyorum. VB 9 ve C# 3'den bahsetmemiz şartıyla, (kaba) eşdeğerinin var anahtar kelimesi olacağını söyleyebilirim. Ama bence amaçlanan sorunun ne olduğunu bilmeden önce ayrıntılarla ilgili kavgalara girmek işe yaramıyor;)

+0

Downvoted; C# içinde hiçbir "Dim" eşdeğeri yoktur. VB'de, Dim anahtar sözcüğü kullanılır Bir değişken bildirme C# olarak, bu niyet bir deyimi başlatmak için bir tür kullanarak örtülüdür.C# içindeki anahtar sözcüğü, bir tür adı yerine kullanılabilir, ancak yine de güçlü bir türdür ve değişkeni gerektirir Aynı ifadede başlatıldı. Değişken için kullanılan tür, va'ye atanan veri türünden çıkarılır. riable. –

+1

Kesinlikle haklısınız, Dim'i kabaca ** eşdeğerine denk getiren tek şey, her iki dilde de bir değişken bildirmek için kullanıldıklarıdır. Bununla birlikte, VB'nin 9 sürümünde, Option Infer'ı açarak, benzer şekilde davranmalarını sağlayabilirsiniz. –

0

Ben Learning C# 3.0 önerebilirsiniz (ve daha sonra, belki C# 3.0 in a Nutshell ve C# in Depth) C# öğrenmek için. Dilin temellerini öğrenmek ve düşüncelerinizi VB'den C# 'ye (veya bu konuyla ilgili başka bir dile) dönüştürmek yerine "dönüştürmek" veya "dönüştürmek" yerine, "C#' yı düşünme" yi başlatmak iyi bir fikir olabilir.


Edit: dedi ki; Öğrenirken öğrendiğiniz yeni dili, dilediğiniz zaman, dil arasındaki farkları öğrenmek için bildiğiniz biriyle karşılaştırmak istersiniz.Benim düşünceme göre, yeni bir dil öğrenirken, prensipleri ve temel farklılıkları kavramakla ilgili daha çok şey var :)

+1

Başlamak açısından C# 'yi Derinlikli olarak tavsiye etmem. Bu gerçekten C# 1'in makul bir kavrayışına sahip insanlara yöneliktir. –

+0

@Skeet: Katılıyorum. Sanırım bundan daha açık olmalıydım. Birincisi (Öğrenme C# 3.0) başlamak için harika bir kitaptı, en azından öyle düşündüm. PS: Cevabım hakkında yorum yapmak için onur duydum^^ – Leif

7

Bu aslında biraz zor, çünkü Dim çeşitli şekillerde kullanılabilir. İlk durum, bildirirken değişkenin türünü açıkça belirtirseniz olur. Bir başlatma ifadesini kullanır, ancak açıkça türünü belirtmek yoksa

// Visual Basic 
Dim num as Integer 
// C# 
int num; 

ikinci olgudur: Bu durumda, tip adını içeren C# bildiriminde karşılık gelir. Bu durumda, VB (en az yeni sürümler), türün çıkarılması için tür çıkarsayı kullanır. Bu C# var anahtar kelimeye karşılık gelen:

// Visual Basic 
Dim str = "Hello world" 
// C# 
var str = "Hello world" 

Son olarak, üçüncü bir durum var - Herhangi bir tür vermeden ve başlatma ifadesini (en azından Option Strict ile kapatılmış) sağlamadan Visual Basic değişken bildirebilirsiniz. Bu durumda, VB.NET, değişkeni Object türünde bir değer olarak bildirir, ancak nesnenin herhangi bir yöntemini çağırmanıza da izin verir. Bu yeni dynamic anahtar kelime ile ne C# 4.0 oldukça yakındır:

// Visual Basic 
Dim sth 
sth = new Random() 
sth.Next() 

// C# 
dynamic sth; 
sth = new Random(); 
sth.Next(); 

[DÜZENLE]
Son olarak, Visual Basic kullanım Dim son durum diziler bildirmektir. C#, diziler sadece başka bir veri türü olarak kabul edilir, bu nedenle beyanı Ben tamsayılar/dizeleri daha önce yazdıklarını benzer:

// Visual Basic 
Dim ints(10, 10) as Integer 
// C# - we need to initialize the array if size is specified 
int[,] ints = new int[10, 10]; 
// C# - we can use type inference too 
var ints = new int[10, 10]; 

[/ DÜZENLEME]

(Gerçekten VB değilim uzman, ama bence bunlar üç olası durum. Yanılıyorsa lütfen beni düzeltin!)

İlgili konular