'namespace'但用作'type'

时间:2013-02-21 16:45:28

标签: c# class namespaces

这是我使用它的程序,叫做Time2 我将参考添加到TimeTest 我一直得到错误'Time2'是'命名空间',但用作'类型'

有人可以告诉我这个错误是什么以及如何修复它?

namespace TimeTest
{
  class TimeTest
  {
    static void Main(string[] args)
    {
        Time2 t1 = new Time2();
    }
  }
}

8 个答案:

答案 0 :(得分:84)

我怀疑你遇到了同样的问题至少两次

下面:

namespace TimeTest
{
    class TimeTest
    {
}

...您声明的类型与其所在的命名空间同名。Don't do that.

现在你显然遇到与Time2相同的问题。如果你添加:

,我怀疑
using Time2;

到你的using指令列表,你的代码将编译。但请拜托,请解决更大的问题:有问题的名字选择。 (按照上面的链接查找为什么这是一个坏主意的更多细节。)

(另外,除非你真的对编写基于时间的类型感兴趣,否则我建议你不要这样做......我说那些的人就是这么做的。使用内置功能或第三方库,例如,嗯,mine。正确使用日期和时间是非常毛茸茸的。:)

答案 1 :(得分:14)

Private Sub btnSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelect.Click
    If cmbPortal.Text.Length = 0 Then
        MessageBox.Show("Select portal to process first", "Invalid", MessageBoxButtons.OK, MessageBoxIcon.Warning)
    Else
        Select Case cmbPortal.Text
            Case "Robinsons"
                FileFilter = "Portable Document File (*.pdf)|*.pdf"
                txtFilePath.Text = parse.showdialog(FileFilter)
                If txtFilePath.Text = Nothing Then
                    MessageBox.Show("No file was selected", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            Case "Waltermart"
                FileFilter = "Portable Document File (*.pdf)|*.pdf"
                txtFilePath.Text = parse.showdialog(FileFilter)
                If txtFilePath.Text = Nothing Then
                    MessageBox.Show("No file was selected", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            Case "7-11"
                Dim OpenFileDialog1 As New OpenFileDialog
                With OpenFileDialog1
                    .FileName = "Excel File"
                    .Title = "Open File"
                    .InitialDirectory = "C:\User\Desktop"
                    .Filter = "EXCEL|*.xls;*.xlsx;*.xlsm;*.xlsb"
                    .FilterIndex = 1
                End With
                If OpenFileDialog1.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then
                    Me.Cursor = Cursors.WaitCursor
                    Try
                        Dim FileName As String = OpenFileDialog1.FileName
                        Dim strConnString As String
                        strConnString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & FileName & ";"
                        Dim strSQL As String
                        strSQL = "SELECT * FROM [Sheet1$]"
                        Dim y As New Odbc.OdbcDataAdapter(strSQL, strConnString)
                        y.Fill(RetVal)
                        txtFilePath.Text = FileName
                    Catch
                        MessageBox.Show("An Error Occurred, Please Contact MIS for Assistance", "SYSTEM", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End Try
                    Me.Cursor = Cursors.Default
                ElseIf txtFilePath.Text = Nothing Then
                    MessageBox.Show("No file was selected", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
                Me.Cursor = Cursors.Default
        End Select
        If txtFilePath.Text.Length = 0 Then
            btnSelect.Enabled = True
            btnConvert.Enabled = False
            cmbPortal.Enabled = True
        Else
            btnSelect.Enabled = False
            btnConvert.Enabled = True
            cmbPortal.Enabled = False
        End If
    End If
End Sub

从namepsace中删除控制器字

答案 2 :(得分:2)

如果您正在使用大型应用程序并且无法更改任何名称,则可以键入.从名称空间中选择所需的类型:

namespace Company.Core.Context{
  public partial class Context : Database Context {
    ...
  }
}
...

using Company.Core.Context;
someFunction(){
 var c = new Context.Context();
}

答案 3 :(得分:1)

我在名为“ Response”的文件夹内创建一个类“ Response.cs”时遇到了此问题。因此VS捕获new Response ()作为文件夹/命名空间。

因此我将类名称更改为StatusResponse.cs并命名为new StatusResponse()。这解决了该问题。

答案 4 :(得分:1)

所有答案都指出了原因,但有时更大的问题是确定所有定义不正确名称空间的位置。借助Resharper之类的工具,可以使用文件夹结构自动调整名称空间,因此很容易遇到此问题。

通过使用以下正则表达式在项目/解决方案中进行搜索,您可以获得引起问题的所有行:

namespace .+\.TheNameUsedAsBothNamespaceAndType

答案 5 :(得分:0)

请检查您的类和名称空间名称是否相同...

当名称空间和类名称相同时会发生。 当您想使用名称空间时,要做一件事写名称空间的全名。

using Student.Models.Db;

namespace Student.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            List<Student> student = null;
            return View();
        }
    }

答案 6 :(得分:0)

class TimeTestnamespace TimeTest 冲突。

如果不能更改命名空间和类名:

为类类型创建别名。

using TimeTest_t = TimeTest.TimeTest;

TimeTest_t s = new TimeTest_t();

答案 7 :(得分:-1)

如果错误是

第26行:
第27行:@foreach(模型中的Customer客户) 第28行:{ 第29行:

提供全名空间
喜欢         @foreach(模型中的Start.Models.customer客户)