G Sam
G Sam

Reputation: 25

the type or namespace could not be found c#

I am very new to c# and this is probably a very n00b error.

For this project I have been handed existing code to work with. The structure of the code is that it has a main solution with simulation as a supporting namespace.

I copied one of the classes (Adt_12) from simulation namespace that I want to modify and renamed it (Pb_cs2). The way I copied is, was to click on save as.. and then changed the file name to the new name I want. And then changed the public class name (and the constructors) to this new file name. I have rebuild 'simulation' and it rebuilts fine.

But when I try to call Pb_cs2, it is throwing the above 'the type or namespace named Pb_cs2 could not be found'.

The way I am using it in the executable class in main; is public static Pb_cs2 pb; (which was originally using Adt_12).

But it can still find Adt_12 in the solution and namespace. Just no Pb_cs2. I have rebuilt and built the solution.

The common error of .NET framework is not relevant.

Any ideas why this is happening and how I can fix this? I really dont want to modify the original file.

Upvotes: 1

Views: 11638

Answers (4)

jgritten
jgritten

Reputation: 1043

Ran into this today. In my case, I had defined a class with a property of DateTime, then every usage of my new class was throwing an error ever time i went to set the property. the error...

the type or namespace of DateTime could not be found

and with that, I forgot to include at the top of my class...

using System; 

Upvotes: 0

lorenz albert
lorenz albert

Reputation: 1459

Do it this way to be sure the calss is known by your solution. Project->addclass select class if it isn't selected by now. Name it and then add the new class. it should appear in your solution explorer. Now copy paste the code. rename the class the namespace should be fine.

and you should be okay with that.

Upvotes: 1

MoonKnight
MoonKnight

Reputation: 23831

Add a reference to the namespace which contains the class you are calling. So you might have something like

namespace SomeNamespace
{
    public class Pb_cs2
    {
    ...
    }
}

so you need to add using SomeNamespace; to the declarations at the top of the file that is attempting to call your class. Or call the class using the fully qualified name

SomeNamespace.Pb_cs2 pbcs2 = new SomeNamespace.Pb_cs2();

You can also create a alias to the namespace when you reference it like

using NS = SomeNamespace;

then the above explicit reference can be called like

NS.Pb_cs2 pbcs2 = new NS.Pb_cs2();

I hope this helps.

Upvotes: 1

Matthew Layton
Matthew Layton

Reputation: 42360

Take a look here. Visual Studio saying name doesn't exist in current context

You need to make sure:

  1. Your class name and namespace are not the same, like Pb_cs2.Pb_cs2 as this will confuse the compiler

  2. You can fully qualify the path to the class i.e. MyNamespace.MyNestedNameSpace.MyClass

  3. You can use a shortcut i.e. using MyClass = MyNamespace.MyNestedNamespace.Class1

  4. Ensure that your projects are targeting the same framework i.e. .NET 4.0 / .NET 4.0 Client Profile.

  5. You might have a collision where your class has the same name as another class, in which case, use option 2, or rename your class to something else.

  6. If your class name does not appear in intellisense, then it does not know where to look for it. You can right click the class and click "Resolve" which will give you some options on how to qualify your class.

...that is all I can think of right now!...Good Luck!

Edit:

Look up C# stylistic conventions... those class names are ugly!!!

Upvotes: 1

Related Questions