Compiler error cs0119

This repository contains .NET Documentation. Contribute to dotnet/docs development by creating an account on GitHub.

Permalink

Cannot retrieve contributors at this time

description title ms.date f1_keywords helpviewer_keywords ms.assetid

Compiler Error CS0119

Compiler Error CS0119

07/20/2015

CS0119

CS0119

048924f1-378f-4021-bd20-299d3218f810

Compiler Error CS0119

‘construct1_name’ is a ‘construct1’, which is not valid in the given context.

The compiler detected an unexpected construct such as the following:

  • A class constructor is not a valid test expression in a conditional statement.

  • A class name was used instead of an instance name to refer to an array element.

  • A method identifier is used as if it were a struct or class

Example

The following sample generates CS0119: ‘C.B()’ is a method, which is not valid in the given context. You can fix this error by changing the name of the method C.B, or using the fully qualified name for the class B like N2.B.

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

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

Сделал вращение,но оно почему-то выдаёт ошибку

Assets/Scripts/moving.cs(22,24): error CS0119: Expression denotes a `type', where a `variable', `value' or `method group' was expected

вот код

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class moving : MonoBehaviour {
	public GameObject obj;
	private float speed = 5f,rotSpeed = 2f;
	private Rigidbody2D rb;
	private SpriteRenderer spr;
	float rotation;

	private void Awake(){
		rb = GetComponent  ();
		spr = GetComponent  ();
	}

	private void Run(){
		rotation = rotSpeed * Input.GetAxis("Horizontal");
		if (Input.GetAxis ("Horizontal") == 1f || Input.GetAxis("Horizontal") == -1f) {
			rotation =+ rotSpeed;
		}
		transform.rotation = Quaternion (new Vector3 (transform.rotation, transform.rotation, rotation));
		Vector3 direction = transform.up * Input.GetAxis ("Vertical");
		transform.position = Vector3.MoveTowards (transform.position, transform.position + direction,speed * Time.deltaTime);
	}

	private void Update () {
		Run ();
	}
}


  • Вопрос задан

    более трёх лет назад

  • 1769 просмотров

А теперь по делу.
transform.rotation = Quaternion (new Vector3 (transform.rotation, transform.rotation, rotation));
Вы СОЗДАЕТЕ объект типа Quaternion , а при создании объектов используется new (выделение памяти и тд и тп).
тоесть должно бы быть
transform.rotation = new Quaternion (new Vector3 (transform.rotation, transform.rotation, rotation));

Если же все таки вы используете не новый созданный объект, а хотите просто метод над кватернионом , то было бы
Quaternion.НужныйМетод(параметры метода). а в вашем случае вы использовать пробуете конструктор объекта (параметры для него) без выделения как такового объета

Многовато повторений и так уже, но повторюсь — вам бы какой нибудь курс «Основы программирования» в обязательном порядке

Пригласить эксперта


  • Показать ещё
    Загружается…

09 февр. 2023, в 11:42

7000 руб./за проект

09 февр. 2023, в 11:23

1500 руб./за проект

09 февр. 2023, в 10:11

1500 руб./в час

Минуточку внимания

Upon becoming familiar with C#, I’m getting the following error when unit testing on the line where an assertion is made Assert.IsInstanceTypeOf.

Error CS0119 'Product' is a type, which is not valid in the given context

The matter of creating a type has been performed. What is causing this error to be raised?

UnitTest1.cs

using Microsoft.VisualStudio.TestTools.UnitTesting;
using ProductNamespace;

namespace TestProject2
{
    [TestClass]
    public class TestProduct
    {
        [TestMethod]
        public void TestNewProduct()
        {
            Product mock_product = new Product(4.95);
            Assert.IsInstanceOfType(mock_product, Product);
        }
    }
}

Product.cs

namespace ProductNamespace
{
    public class Product
    {
        private double price;

        public Product(double price)
        {
            this.price = price;
        }
    }
}

Hamza Khanzada's user avatar

asked Sep 2, 2021 at 5:57

binny's user avatar

3

It looks like you’re trying to use the IsInstanceOfType(object, Type) method. To do that, you need to provide a Type argument, but currently you’ve just specified the class name directly. That’s not a valid C# expression — you need to use the typeof operator to obtain a Type from the class name:

Assert.IsInstanceOfType(mock_product, typeof(Product));

Note that this really isn’t a useful test — you’re not testing anything about the code, you’re essentially asking whether .NET is behaving normally. If the code reaches that line (i.e. if the constructor doesn’t throw an exception) then it’s bound to pass — because the result of new Xyz is always an Xyz. (There’s a slight edge case around COM interfaces, but it’s not relevant here.)

answered Sep 2, 2021 at 5:59

Jon Skeet's user avatar

Jon SkeetJon Skeet

1.4m851 gold badges9045 silver badges9133 bronze badges

Assert.IsInstanceOfType(mock_product, typeof(Product));

Please try the above. As per official documentation, the second parameter should be of Type.

answered Sep 2, 2021 at 6:02

SRIDHARAN's user avatar

SRIDHARANSRIDHARAN

1,1331 gold badge15 silver badges34 bronze badges

0

Revin

0 / 0 / 0

Регистрация: 27.05.2018

Сообщений: 52

1

04.06.2019, 23:41. Показов 16475. Ответов 8

Метки нет (Все метки)


Здравствуйте, код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
private void AutoUpdaterOnCheckForUpdateEvent(UpdateInfoEventArgs args)
        {
            if (args != null)
            {
                if (args.IsUpdateAvailable)
                {
 
                    // Uncomment the following line if you want to show standard update dialog instead.
                    // AutoUpdater.ShowUpdateForm();
                    try
                    {
                        if (AutoUpdater.DownloadUpdate())
                        {
                            Application.Exit();
 
                            Process.Start("Multi Theft Auto.exe");
                        }
                    }
                    catch (Exception exception)
                    {
                        MessageBox.Show(exception.Message, exception.GetType().ToString(), MessageBoxButtons.OK,MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show(@"There is no update available please try again later.", @"No update available",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    progressBar1.Value = 10;
                    Process.Start("Multi Theft Auto.exe");
                }
            }
            else
            {
                MessageBox.Show(
                        @"There is a problem reaching update server please check your internet connection and try again later.",
                        @"Update check failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

Ошибка в название, документации не нашел, ну или она мне не попалась, потратил целый вечер, но увы, использовать как метод не дается

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Эксперт .NET

6269 / 3897 / 1567

Регистрация: 09.05.2015

Сообщений: 9,188

05.06.2019, 00:12

2

В какой строке ошибка хоть?



0



2496 / 1512 / 803

Регистрация: 23.02.2019

Сообщений: 3,689

05.06.2019, 00:15

3

Обычно ошибка указывает на конкретное место. Какая именно строка вызывает ошибку?



0



Revin

0 / 0 / 0

Регистрация: 27.05.2018

Сообщений: 52

05.06.2019, 08:33

 [ТС]

4

Ошибка пишется когда я пытаюсь использовать этот воид в другом. Т.е. я вставляю название со всеми аргументами:

C#
1
AutoUpdaterOnCheckForUpdateEvent(UpdateInfoEventArgs args)

И он выдает эту ошибку, я понимаю почему, но не знаю как правильно сделать.



0



2496 / 1512 / 803

Регистрация: 23.02.2019

Сообщений: 3,689

05.06.2019, 08:38

5

Почему бы не показать именно то, как

Цитата
Сообщение от Revin
Посмотреть сообщение

я пытаюсь использовать этот воид в другом.

Скорее всего вы неверно передаёте/создаёте аргументы.



0



0 / 0 / 0

Регистрация: 27.05.2018

Сообщений: 52

05.06.2019, 18:59

 [ТС]

6

Возможно, можно узнать как правильно?



0



3396 / 2412 / 1161

Регистрация: 14.08.2016

Сообщений: 8,086

05.06.2019, 19:22

7

покажи тот кусок кода, где происходит ошибка



0



Revin

0 / 0 / 0

Регистрация: 27.05.2018

Сообщений: 52

05.06.2019, 21:16

 [ТС]

8

Здесь ошибка

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       private void Updater()
        {
            progressBar1.Value = 10;
            AutoUpdater.Start("", new NetworkCredential("", ""));
            progressBar1.Value = 30;
            AutoUpdater.ShowSkipButton = false;
            progressBar1.Value = 50;
            AutoUpdater.ShowRemindLaterButton = false;
            progressBar1.Value = 70;
            AutoUpdater.Mandatory = true;
            progressBar1.Value = 80;
            AutoUpdater.UpdateMode = Mode.Forced;
            progressBar1.Value = 85;
            AutoUpdaterOnCheckForUpdateEvent(UpdateInfoEventArgs);
        }

ну и сам воид который я хочу заюзать

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 private void AutoUpdaterOnCheckForUpdateEvent(UpdateInfoEventArgs args)
        {
            if (args != null)
            {
                if (args.IsUpdateAvailable)
                {
 
                    // Uncomment the following line if you want to show standard update dialog instead.
                    // AutoUpdater.ShowUpdateForm();
                    try
                    {
                        if (AutoUpdater.DownloadUpdate())
                        {
                            Application.Exit();
 
                            Process.Start("Multi Theft Auto.exe");
                        }
                    }
                    catch (Exception exception)
                    {
                        MessageBox.Show(exception.Message, exception.GetType().ToString(), MessageBoxButtons.OK,MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show(@"There is no update available please try again later.", @"No update available",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    progressBar1.Value = 10;
                    Process.Start("Multi Theft Auto.exe");
                }
            }
            else
            {
                MessageBox.Show(
                        @"There is a problem reaching update server please check your internet connection and try again later.",
                        @"Update check failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }



0



kolorotur

Эксперт .NET

16930 / 12507 / 3286

Регистрация: 17.09.2011

Сообщений: 20,743

05.06.2019, 21:25

9

Лучший ответ Сообщение было отмечено Revin как решение

Решение

Цитата
Сообщение от Revin
Посмотреть сообщение

AutoUpdaterOnCheckForUpdateEvent(UpdateInfoEventAr gs);

UpdateInfoEventArgs — это что?
Если просто имя класса, то вам надо сначала создать экземпляр (или передавать null):

C#
1
AutoUpdaterOnCheckForUpdateEvent(new UpdateInfoEventArgs());



1



#c# #unit-testing #mstest

Вопрос:

Ознакомившись с C#, я получаю следующую ошибку при модульном тестировании в строке, где делается утверждение Assert.IsInstanceTypeOf .

Error CS0119 'Product' is a type, which is not valid in the given context

Вопрос о создании типа был выполнен. Что вызывает возникновение этой ошибки?

UnitTest1.cs

 using Microsoft.VisualStudio.TestTools.UnitTesting;
using ProductNamespace;

namespace TestProject2
{
    [TestClass]
    public class TestProduct
    {
        [TestMethod]
        public void TestNewProduct()
        {
            Product mock_product = new Product(4.95);
            Assert.IsInstanceOfType(mock_product, Product);
        }
    }
}
 

Product.cs

 namespace ProductNamespace
{
    public class Product
    {
        private double price;

        public Product(double price)
        {
            this.price = price;
        }
    }
}
 

Комментарии:

1. Что вы подразумеваете под «Вопросом создания типа было выполнено»?

2. Я создал проект модульного тестирования с нуля. После настройки модульного теста Visual Studio отобразила запрос на создание нового типа. Я просто хотел сообщить, что сделал это.

3. Хорошо — похоже, вы думали, что это связано с ошибкой.

Ответ №1:

Похоже, вы пытаетесь использовать этот IsInstanceOfType(object, Type) метод. Для этого вам нужно указать Type аргумент, но в настоящее время вы только что указали имя класса напрямую. Это недопустимое выражение C# — вам нужно использовать typeof оператор для получения a Type из имени класса:

 Assert.IsInstanceOfType(mock_product, typeof(Product));
 

Обратите внимание, что это действительно бесполезный тест — вы ничего не тестируете в коде, вы, по сути, спрашиваете, нормально ли ведет себя .NET. Если код достигает этой строки (т. Е. Если конструктор не создает исключения), то он обязательно пройдет — потому что результатом new Xyz всегда является an Xyz . (Есть небольшой крайний случай вокруг COM-интерфейсов, но здесь это не имеет значения.)

Ответ №2:

 Assert.IsInstanceOfType(mock_product, typeof(Product));
 

Пожалуйста, попробуйте сделать это выше. Согласно официальной документации, второй параметр должен быть Type .

Комментарии:

1. когда я начал писать ответ, первого ответа не существовало. Я понял это только после отправки ответа.

This is my code in the login click button as Sir suggested:

private void btnLogin_Click(object sender, EventArgs e)
{
AppDatabase1DataSet ds = new AppDatabase1DataSet ();
AppDatabase1DataSet .LoginDataTable dt = new AppDatabase1DataSet.LoginDataTable ();
AppDatabase1DataSet.LoginDataTable();
this.loginTableAdapter1 .Fill (dt) ;
foreach (DataRow dr in dt .Rows )
    {
      if(dr[0].ToString()==txtuname .Text && dr[1].ToString()== txtpassword.Text )
    {
      txtpassword.Text = "";
      txtpassword.Text = dr[0].ToString();
      MessageBox.Show("Login Succeeded");
    }

I’ve defined everythings accordingly but this error pops up on the LoginDataTable() line:

Error 1 ‘csharp_phonebk.AppDatabase1DataSet.LoginDataTable’ is a ‘type’, which is not valid in the given context

I don’t know why…Please answer me asap.

Updated 16-Jan-10 23:03pm


wrote:

AppDatabase1DataSet.LoginDataTable();

Here you are using LoginDataTable as a method. But since it is a class, you are getting the error.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject,
20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8
+1 (416) 849-8900

Понравилась статья? Поделить с друзьями:
  • Compiler error cs0030
  • Compiler error cs0029
  • Compiler error cs0019
  • Compiler error c2360
  • Compiler debug log error unable to generate contract bytecode and abilities