Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the difference between using statement and adding a reference?

Tags:

In Visual Studio, when do you have to add a reference to a dll? I always try to have a minimum of references in my projects, I try to only include the ones that are really necessary.

I would think that I only need a reference if I have a using statement in my source. But that's not always enough.

For instance, I have a very simple program that is using System and Microsoft.Practices.EnterpriseLibrary.Data:

using System; using Microsoft.Practices.EnterpriseLibrary.Data;  public class SimpleConnection {     private static void Main() {         var database = DatabaseFactory.CreateDatabase();         var command =             database.GetSqlStringCommand(                 "select table_name from information_schema.tables");         using (var reader = database.ExecuteReader(command)) {             while (reader.Read()) {                 Console.WriteLine(reader.GetString(0));             }         }     } } 

I would think I only have to reference System and Microsoft.Practices.EnterpriseLibrary.Data. But that's not true. If I don't reference System.Data, the code won't compile.

The type 'System.Data.Common.DbCommand' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

How can I know beforehand when I have to add a reference to something I'm not using?

like image 408
comecme Avatar asked May 31 '11 19:05

comecme


People also ask

What is the purpose of the using statement?

The using statement, by contrast, allows the programmer to deliberately and explicitly reference how to dispose of some object that has been used, or more accurately, a resource for an object, that has been used by the object.

Why use using statement in C#?

CSharp Online Training The using statement is used to set one or more than one resource. These resources are executed and the resource is released. The statement is also used with database operations. The main goal is to manage resources and release all the resources automatically.


1 Answers

References tell the compiler where to look for types to import. Using statements tell the compiler where to look for "full names"

So you can either type

 using System.Text   StringBuilder sb;   // ... 

or

 System.Text.StringBuider sb;  // ... 

But either way, you must have a reference to System.dll (or is it mscorlib for StringBuilder?). Without the ref, the compiler doesn't know what types are available.

like image 85
Michael Kennedy Avatar answered Oct 01 '22 21:10

Michael Kennedy