Compiler Error CS0119

'construct1_name' adalah 'construct1', yang tidak valid dalam konteks yang diberikan.

Pengkompilasi mendeteksi konstruksi yang tidak terduga seperti berikut ini:

  • Konstruktor kelas bukan ekspresi pengujian yang valid dalam pernyataan kondisional.

  • Nama kelas digunakan alih-alih nama instans untuk merujuk ke elemen array.

  • Pengidentifikasi metode digunakan seolah-olah itu adalah struktur atau kelas

Contoh

Contoh 1

Sampel berikut menghasilkan CS0119: 'C.B()' adalah metode, yang tidak valid dalam konteks yang diberikan. Anda dapat memperbaiki kesalahan ini dengan mengubah nama metode C.B, atau menggunakan nama yang sepenuhnya memenuhi syarat untuk kelas B seperti N2.B.

namespace N2
{
    public static class B
    {
        public static void X() {}
    }
}

namespace N1
{
    public class C
    {
        void B() {}
        void M() => B.X();   // CS0119
    }
}

Contoh 2

Sampel berikut menunjukkan skenario umum di mana CS0119 terjadi saat mencoba menambahkan nama kelas ke kumpulan jenis. Pengkompilasi mengharapkan instans Type , bukan nama kelas.

using System;
using System.Collections.Generic;

public class Page_BaseClass { }
public class Page_CRTable { }
public class Page_DBGridWithTools { }

public static class PageTypeManager
{
    public static List<Type> GetPageTypes()
    {
        List<Type> pageTypesList = new List<Type>();

        // CS0119: 'Page_BaseClass' is a type, which is not valid in the given context
        pageTypesList.Add(Page_BaseClass);
        pageTypesList.Add(Page_CRTable);
        pageTypesList.Add(Page_DBGridWithTools);

        return pageTypesList;
    }
}

Untuk memperbaiki kesalahan ini, gunakan Type.GetType fungsi atau typeof operator untuk mendapatkan Type instance:

using System;
using System.Collections.Generic;

public static class PageTypeManager
{
    public static List<Type> GetPageTypes()
    {
        List<Type> pageTypesList = new List<Type>();

        // Use typeof operator to get Type instances
        pageTypesList.Add(typeof(Page_BaseClass));
        pageTypesList.Add(typeof(Page_CRTable));
        pageTypesList.Add(typeof(Page_DBGridWithTools));

        return pageTypesList;
    }

    // Alternative: Load types dynamically by name
    public static List<Type> GetPageTypesByName(string[] typeNames)
    {
        List<Type> pageTypesList = new List<Type>();

        foreach (string typeName in typeNames)
        {
            Type type = Type.GetType(typeName);
            if (type != null)
            {
                pageTypesList.Add(type);
            }
        }

        return pageTypesList;
    }
}