Permalink
Cannot retrieve contributors at this time
description | title | ms.date | f1_keywords | helpviewer_keywords | ms.assetid |
---|---|---|---|---|---|
Compiler Error CS0116 |
Compiler Error CS0116 |
12/04/2018 |
CS0116 |
CS0116 |
4cb137b5-ec29-4c1a-adde-9f8424cb9496 |
Compiler Error CS0116
A namespace cannot directly contain members such as fields or methods.
A namespace can contain other namespaces, structs, and classes. For more information, see the namespace keyword article.
Example
The following sample will cause Visual Studio to flag parts of the code as being in violation of CS0116. Attempting to build this code will result in build failure:
// CS0116.cs namespace x { // A namespace can be placed within another namespace. using System; // These variables trigger the CS0116 error as they are declared outside of a struct or class. public int latitude; public int longitude; Coordinate coord; // Auto-properties also fall under the definition of this rule. public string LocationName { get; set; } // This method as well: if it isn't in a class or a struct, it's violating CS0116. public void DisplayLatitude() { Console.WriteLine($"Lat: {latitude}"); } public struct Coordinate { } public class CoordinatePrinter { public void DisplayLongitude() { Console.WriteLine($"Longitude: {longitude}"); } public void DisplayLocation() { Console.WriteLine($"Location: {LocationName}"); } } }
Note that in C#, methods and variables must be declared and defined within a struct or class. For more information on program structure in C#, see the General Structure of a C# Program article. To fix this error, rewrite your code such that all methods and fields are contained within either a struct or a class:
namespace x { // A namespace can be placed within another namespace. using System; // These variables are now placed within a struct, so CS0116 is no longer violated. public struct Coordinate { public int Latitude; public int Longitude; } // The methods and fields are now placed within a class, and the compiler is satisfied. public class CoordinatePrinter { Coordinate coord; public string LocationName { get; set; } public void DisplayLatitude() { Console.WriteLine($"Lat: {coord.Latitude}"); } public void DisplayLongitude() { Console.WriteLine($"Longitude: {coord.Longitude}"); } public void DisplayLocation() { Console.WriteLine($"Location: {LocationName}"); } } }
See also
- General Structure of a C# Program
- The C# type system
- Namespaces
Ok so im trying to make a program that checks if a program is currently running. It is giving me a error when ever i declare a void. I am new to C# so im sorry if its a stupid.
using System;
using System.Windows;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using Microsoft.VisualBasic.ApplicationServices;
namespace IsProgramRunning
{
private void IsRunning()
{
Process[] pname = Process.GetProcessesByName("VLC Player");
if (pname.Length > 0)
{
MessageBox.Show("Process Running");
}
else
{
MessageBox.Show("Process Not running");
}
System.Threading.Thread.Sleep(5 * 1000);
}
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}
If im going about this all wrong and there is a easy way to do it in c++ that would be good to
asked Feb 15, 2020 at 1:39
Jacob KrumholzJacob Krumholz
431 gold badge1 silver badge9 bronze badges
1
To have instance members and methods, you need a class. You have confused a namespace with a class
namespace MyAwesomeNameSpace
{
public class ProgramRunningHelper
{
// put your class code here
}
}
Compiler Error CS0116
A namespace cannot directly contain members such as fields or methods.
A namespace can contain other namespaces, structs, and classes.
answered Feb 15, 2020 at 1:41
TheGeneralTheGeneral
77.6k9 gold badges91 silver badges131 bronze badges
0
Ok so im trying to make a program that checks if a program is currently running. It is giving me a error when ever i declare a void. I am new to C# so im sorry if its a stupid.
using System;
using System.Windows;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using Microsoft.VisualBasic.ApplicationServices;
namespace IsProgramRunning
{
private void IsRunning()
{
Process[] pname = Process.GetProcessesByName("VLC Player");
if (pname.Length > 0)
{
MessageBox.Show("Process Running");
}
else
{
MessageBox.Show("Process Not running");
}
System.Threading.Thread.Sleep(5 * 1000);
}
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}
If im going about this all wrong and there is a easy way to do it in c++ that would be good to
asked Feb 15, 2020 at 1:39
Jacob KrumholzJacob Krumholz
431 gold badge1 silver badge9 bronze badges
1
To have instance members and methods, you need a class. You have confused a namespace with a class
namespace MyAwesomeNameSpace
{
public class ProgramRunningHelper
{
// put your class code here
}
}
Compiler Error CS0116
A namespace cannot directly contain members such as fields or methods.
A namespace can contain other namespaces, structs, and classes.
answered Feb 15, 2020 at 1:41
TheGeneralTheGeneral
77.6k9 gold badges91 silver badges131 bronze badges
0
Содержание
- Error cs0116 как исправить
- Почему ошибка компилятора CS0116 превыше всего?
- 2 ответы
- Error cs0116 как исправить
- Ошибка Unity3D — Error CS0116
- Как исправить ошибки CS0117 и CS0122?
Error cs0116 как исправить
Здравствуйте, Аноним, Вы писали:
А>Error 1 A namespace cannot directly contain members such as fields or methods
А>подскажите как можно убрать ошибку
Самый простой и надежный способ — выключить компьютер. Есть способы и посложнее, но для них желательно знать, на каком языке написана программа, и неплохо бы посмотреть на код.
От: | Pavel_Agurov | |
Дата: | 16.07.10 14:11 | |
Оценка: |
Здравствуйте, Аноним, Вы писали:
А>Error 1 A namespace cannot directly contain members such as fields or methods
А>подскажите как можно убрать ошибку
Ну как написано так и сделать — обернуть в класс. В C# нет глобальных переменных
От: | Аноним | |
Дата: | 16.07.10 14:54 | |
Оценка: |
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, Аноним, Вы писали:
А>>Error 1 A namespace cannot directly contain members such as fields or methods
А>>подскажите как можно убрать ошибку
N>Самый простой и надежный способ — выключить компьютер. Есть способы и посложнее, но для них желательно знать, на каком языке написана программа, и неплохо бы посмотреть на код.
кода нет просто бросил меню на форму и сделал пару пунктов.
сделал другой проект заработало (библиотеки подключал с компонентами не работало пишет ошибку и все тут CS0116)
в новом проекте заработало
Есть еще небольшой вопрос
VS2010 постоянно падает подскажите где взять последнии обновления
Источник
Почему ошибка компилятора CS0116 превыше всего?
код скрипта в Default.aspx.cs (обратите внимание, что «этот случайный текст каким-то образом проигнорирован» игнорируется и синтаксическая ошибка не генерируется):
Почему появляется ошибка компилятора CS0116? Почему игнорируются другие вещи (например, синтаксическая ошибка)? Обновление: обратите внимание, что если я удалю «этот случайный текст каким-то образом проигнорирован», ошибка строки все равно останется.
ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ: Решение 1. Очевидно, лишнюю строку следует удалить. 2. Инструменты-> Параметры-> Текстовый редактор-> Базовый-> VB-Specific-> Красивое перечисление (переформатирование) кода было включено и вызывало автоматическую смену регистра («класс» на «класс»). Я не сразу это заметил. Большое Вам спасибо. Теперь это работает как шарм. @ Роб Левин и @Guffa Я могу принять только один ответ, но вы оба проделали отличную работу!
Ваш вопрос содержит собственный ответ в нескольких местах (сообщение об ошибке, комментарий и косвенно ваше замечание о «каким-то образом проигнорировано»). По этой причине это плохой вопрос, и, в первую очередь, из-за того, что сообщение об ошибке компилятора не отображается — sehe
Обратите внимание, что если я удалю «этот случайный текст каким-то образом проигнорирован», ошибка строки все равно останется. Нет, для вас я повторю: эта строка НЕ имеет значения. Игнорируйте это, если хотите. Строка добавлена намеренно, чтобы подчеркнуть тот факт, что синтаксическая ошибка каким-то образом игнорируется. В общем, мой вопрос не содержит собственного ответа. Так что это разумный вопрос. — Pavel Nefyodov
Согласно вашим собственным комментариям к существующим ответам, опубликованный вами код больше не актуален. Убедитесь, что вы применили оба предложения, а затем отредактируйте свой вопрос с помощью обновленного кода, предполагая, что ошибка все еще существует. — Paul-Jan
Кроме того, то, что удаление одной строки не устраняет ошибку, не означает, что ее можно игнорировать. Это просто означает, что в вашем коде есть несколько ошибок. — Paul-Jan
Вы пробовали и мой ответ, и ответ Гуффа? в то же время? Оба они вызывают одну и ту же проблему для компилятора. Они оба являются нераспознанным материалом (который выглядит как какое-то объявление) непосредственно в пространстве имен, а не заключен в класс (или структуру). Любой из них вызовет ошибку, которую вы видите. Вы должны исправить их обоих. — Rob Levine
2 ответы
Ошибка CS0116 появляется именно из-за вашей строки
Это сообщение об ошибке сообщает вам, что такие элементы, как поля, методы, свойства и т. Д., Не могут появляться непосредственно внутри пространства имен — они должны быть заключены в класс или структуру. [Как указывает Марк в комментарии — даже несмотря на то, что эта строка появляется над объявлением пространства имен, она по-прежнему считается находящейся непосредственно внутри Глобальный пространство имен]
Другими словами — поскольку он видит эту проблему компиляции, он не пытается понять, что у вас может быть в файле класса, и не выдает никаких сообщений о типах синтаксической ошибки — он действительно говорит «это файл абсолютно неправильный, и я даже не собираюсь пытаться разобраться в нем «.
ответ дан 26 апр.
стоит отметить (для OP), что это находится в корневом / глобальном пространстве имен, но все же применяются те же правила. Это все еще пространство имен. — Марк Гравелл ♦
Спасибо за быстрый ответ. Если я удалю «этот случайный текст каким-то образом проигнорирован», ошибка строки все равно сохранится. Так что проблема не в этом. — Павел Нефёдов
Это потому что ты Также есть проблема, которую Гуффа отмечает в своем ответе — вам нужно изменить регистр букв в слове «Класс» на «класс». Что касается компилятора, это одна и та же проблема: нераспознанный материал, который выглядит как какое-то объявление, которое находится непосредственно в пространстве имен, а не в классе (или структуре) — Роб Левин
Изменить Class в class .
Поскольку компилятор не распознает Class ,
метод все еще не находится в классе, и вы все равно получаете ту же ошибку.
Источник
Error cs0116 как исправить
Здравствуйте, Аноним, Вы писали:
А>Error 1 A namespace cannot directly contain members such as fields or methods
А>подскажите как можно убрать ошибку
Самый простой и надежный способ — выключить компьютер. Есть способы и посложнее, но для них желательно знать, на каком языке написана программа, и неплохо бы посмотреть на код.
От: | Pavel_Agurov | |
Дата: | 16.07.10 14:11 | |
Оценка: |
Здравствуйте, Аноним, Вы писали:
А>Error 1 A namespace cannot directly contain members such as fields or methods
А>подскажите как можно убрать ошибку
Ну как написано так и сделать — обернуть в класс. В C# нет глобальных переменных
От: | Аноним | |
Дата: | 16.07.10 14:54 | |
Оценка: |
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, Аноним, Вы писали:
А>>Error 1 A namespace cannot directly contain members such as fields or methods
А>>подскажите как можно убрать ошибку
N>Самый простой и надежный способ — выключить компьютер. Есть способы и посложнее, но для них желательно знать, на каком языке написана программа, и неплохо бы посмотреть на код.
кода нет просто бросил меню на форму и сделал пару пунктов.
сделал другой проект заработало (библиотеки подключал с компонентами не работало пишет ошибку и все тут CS0116)
в новом проекте заработало
Есть еще небольшой вопрос
VS2010 постоянно падает подскажите где взять последнии обновления
Источник
Ошибка Unity3D — Error CS0116
Не могу понять что делать, уже весь интернет перерыл, где надо исправить код? спасибо
вот ошибки:
AssetsScriptsObjectCounter.cs(1,13): error CS0116: A namespace cannot directly contain members such as fields or methods
AssetsScriptsObjectCounter.cs(1,17): error CS1022: Type or namespace definition, or end-of-file expected
AssetsScriptsObjectCounter.cs(2,18): error CS0116: A namespace cannot directly contain members such as fields or methods
AssetsScriptsObjectCounter.cs(2,22): error CS1022: Type or namespace definition, or end-of-file expected
AssetsScriptsObjectCounter.cs(4,37): error CS1001: Identifier expected
AssetsScriptsObjectCounter.cs(4,37): error CS1003: Syntax error, ‘,’ expected
AssetsScriptsObjectCounter.cs(4,39): error CS1003: Syntax error, ‘,’ expected
AssetsScriptsObjectCounter.cs(4,48): error CS1001: Identifier expected
var Paper ; int = 0;
var paperToWin ; int = 10;
function OnTriggerEnter( other : Collider )
<
if (other.gameObject.tag == «Paper») ;
<
Paper += 1;
Debug.Log(«A paper was picked up. Total papers = » + Paper);
Destroy(other.gameObject);
>
>
function OnGUI()
<
if (Paper Лучший ответ
> Не могу понять что делать
Изучать C#
В Unity скрипты пишутся на C#, а ты пытаешься писать на TypeScript (или JavaScript), ещё и с ошибками.
Источник
Как исправить ошибки CS0117 и CS0122?
По туториалу собираю Tower Defence на Unity для себя и на моменте создания скрипта для башен получаю ошибки CS0117 и CS0122.
Туториал супер наглядный, там просто пишется код и дополнительно объясняется что к чему.
По итогу его написания у человека все работает, у меня ошибки.
Дословно выглядят они так:
1) AssetsScriptsTower.cs(26,41): error CS0117: ‘Enemies’ does not contain a definition for ‘enemies’
2) AssetsScriptsTower.cs(51,21): error CS0122: ‘Enemy.takeDamage(float)’ is inaccessible due to its protection level
- Вопрос задан 13 мая 2022
- 166 просмотров
Простой 1 комментарий
1 — у тебя в классе Enemies нет члена enemies. Возможно его нет совсем, а возможно у тебя опечатка.
2 — у тебя в классе Enemy есть метод takeDamage, но он не публичный
PS: На будущее:
— отмечай комментарием, на какой именно строке сработала ошибка
— не забывай заворачивать код в тег — это сильно упростит чтение для тех, кто попробует решить твой вопрос
— перед тем как задавать вопрос — попробуй загуглить в чём суть ошибки, и попробуй сам решить (CS0117, CS0122)
— перед тем как начинать писать на юнити, лучше всё-таки хоть самые основы C# изучить. Тут как в математике — без понимания простых вещей, ты гарантированно не сможешь понять сложные вещи.
Источник
I get Compiler Error CS0116 in the code:
<%@ Page EnableEventValidation="false" ValidateRequest="false" Language="C#" AutoEventWireup="true"
CodeFile="../Default.aspx.cs" Inherits="x.Program" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<%@ Register Assembly="Validators" Namespace="Sample.Web.UI.Compatibility" TagPrefix="cc1" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Title</title>
<link href="StyleSheet.css" rel="stylesheet" type="text/css" />
</head>
<body class="mainbody"></body>
</html>
script code in Default.aspx.cs(Please note that «this random text somehow ignored» is ignored and no syntax error is generated):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//this random text somehow ignored (now commented)
namespace x
{
// To fix the error, you must
// enclose a method in a class:
class Program // changed from Class Program
{
void Method2(string str)
{
Console.WriteLine(str)
}
}
}
Why is the compiler Error CS0116 appearing? Why are the other things ignored (such as syntax error)? Update: Please note, if I delete «this random text somehow ignored» line error still persist.
FINAL UPDATE:
Solution is
1. Obviously, extra line should be deleted.
2. Tools->Options->Text Editor->Basic->VB-Specific->Pretty listing(reformatting) of code was on and caused automatic change of case («class» to «Class»). I didn’t notice it straight away.
Thank you very much. It works as charm now. @Rob Levine and @Guffa I can accept only one answer, but you both did a great job!
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; // Создать абстрактный класс Stud с методами, позволяющим вывести на экран информацию о персоне //Создать производные классы: Студент (фамилия, дата рождения, факультет, курс), Преподаватель (фамилия, дата рождения, факультет, должность, стаж), со своими методами вывода информации на экран. //Cоздать базу (массив) из n персон, вывести полную информацию из базы на экран. namespace StudAbstract { abstract class Stud { abstract public void Show(); public void defineDate(DateTime date) { DateTime dateNow = DateTime.Today; int year = dateNow.Year - date.Year; if (dateNow.Month < date.Month || (dateNow.Month == date.Month && dateNow.Day < date.Day)) year--; Console.WriteLine("Возраст:{0} ", year); } } //фамилия, дата рождения, факультет class Applicant : Stud { public string Surname; public DateTime Date; public string Faculty; public Applicant(string surn, DateTime date1, string fac) { this.Surname = surn; this.Date = date1; this.Faculty = fac; } public string pSurname { get { return Surname; } set { Surname = value; } } public DateTime pDate { get { return Date; } set { Date = value; } } public string pFaculty { get { return Faculty; } set { Faculty = value; } } public override void Show() { Console.WriteLine("Фамилия: {0}", this.pSurname); Console.WriteLine("Дата рождения: {0:D}", this.pDate); Console.WriteLine("УО {0}", this.pFaculty); } } //Студент (фамилия, дата рождения, факультет, курс), class Student : Applicant { public int studyYear; public Student(string surn, DateTime date1, string fac, int course) : base(surn, date1, fac) { this.studyYear = course; } public override void Show() { Console.WriteLine("Фамилия : {0}", this.Surname); Console.WriteLine("Дата рождения: {0:D}", this.Date); Console.WriteLine("Факультет: {0}", this.Faculty); Console.WriteLine("Курс: {0}", this.studyYear); } } //Преподаватель (фамилия, дата рождения, факультет, должность, стаж), class Teacher : Applicant { public string Position; public int Experience; public Teacher(string surn, DateTime date1, string fac, string pos, int st) : base(surn, date1, fac) { this.Position = pos; this.Experience = st; } public override void Show() { Console.WriteLine("Фамилия : {0}", this.Surname); Console.WriteLine("Дата рождения: {0:D}", this.Date); Console.WriteLine("Факультет: {0}", this.Faculty); Console.WriteLine("Должность: {0}", this.Position); Console.WriteLine("Стаж: {0}", this.Experience); } } public static void GetAge(DateTime birthDay) //компилятор выделяет GetAge и говорит, что ошибка заключается тут { //текущая дата DateTime today = DateTime.Now; //Переменная для расчета возраста int age; //Временная переменная для сравнения дат //(определяем было ли день рождения в этом году или нет) DateTime tmpDate = new DateTime(today.Year, birthDay.Month, birthDay.Day); if (tmpDate <= today) // если равно, то ДР сегодня :) //если уже было или сегодня age = today.Year - birthDay.Year; else //если не было age = today.Year - birthDay.Year - 1; Console.WriteLine("Возраст:{0} ", age); } class Program { static void Main(string[] args) { // база данных Stud[] db = new Stud[6]; DateTime date3 = new DateTime(1998, 2, 17, 7, 0, 0); DateTime date4 = new DateTime(2000, 10, 15, 7, 0, 0); DateTime date5 = new DateTime(1946, 9, 30, 7, 0, 0); DateTime date6 = new DateTime(1940, 12, 1, 7, 0, 0); DateTime date7 = new DateTime(2000, 4, 6, 7, 0, 0); db[0] = new Applicant("Иванов", date3, "ПОИТ"); db[1] = new Applicant("Васильев", date3, "БГУИР МРК"); db[2] = new Student("Андреева", date4, "ПМС", 1); db[3] = new Student("Алексеенко", date3, "ПОИТ", 2); db[4] = new Teacher("Назаров", date5, "ПОИТ", "Cтарший преподаватель", 20); db[5] = new Teacher("Батура", date6, "ПОИТ", "Доцент", 26); foreach (Stud item in db) { item.Show(); Console.WriteLine(); } Console.ReadKey(); } } } |