Меню

Как исправить ошибку cs0542

error CS0542

пытался сделать оптимизацию путём отключения рендера объекта когда на него не смотрит камера, и включения обратно когда камера смотрит
получилось вот так

Используется csharp

using UnityEngine;
using System.Collections;

public class OnBecameVisible : MonoBehaviour {

        void OnBecameInvisible() {             
                gameObject.GetComponent<MeshRenderer>().enabled = false;
        }
        void OnBecameVisible() {
                gameObject.GetComponent<MeshRenderer>().enabled = false;
        }
}

но Юнька выдаёт ошибку
error CS0542: `OnBecameVisible.OnBecameVisible()’: member names cannot be the same as their enclosing type

Последний раз редактировалось waruiyume 04 май 2015, 23:44, всего редактировалось 1 раз.
Причина: Переименовано

Andrey_Sop
UNец
 
Сообщения: 13
Зарегистрирован: 31 мар 2015, 22:29

Re: Оптимизация и помощь в скрипте

Сообщение waruiyume 04 май 2015, 23:43

Переводить ошибку не пробовали?
Никакого профита от такой оптимизации не будет.

Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6049
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: error CS0542

Сообщение getAlex 05 май 2015, 14:39

1) Рендер и так отключается когда камера его не видит.
Frustum Culling отрезает весь рендер, не входящий в плоскости камеры(по умолчанию существует и всегда активен), а Occlusion Culling отрезает всё что не видит камера (если одни объекты заслоняют другие) — по умолчанию включен, выглядит как bool переменная на камере.

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

может быть

должно быть такое же, как и у класса

getAlex
Адепт
 
Сообщения: 1775
Зарегистрирован: 10 авг 2013, 18:30


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15



I Have this error but i can’t identify the error (CS0542) for some reason:

member names cannot be the same as their enclosing type

Code:

class SuperTeam
{
    string SuperTeamName;

    public SuperTeam()
    {
        SuperTeamName = "";
    }

    public void SuperTeam (string nSuperTeamName)
    {
        SuperTeamName = nSuperTeamName;
    }
}

Alexei Levenkov's user avatar

asked Dec 4, 2013 at 21:52

Shiroe's user avatar

6

The problem is here:

public void SuperTeam(string nSuperTeamName)
{
    SuperTeamName = nSuperTeamName;
}

I believe you wanted to have a constructor for your class, and since constructor can’t have a return type, the compiler is treating it as a method. Now the method name is same as the class name, that is why you are getting the error.

  • If it is a constructor then remove void (return type)
  • If it is a simple method then change the name to something other than SuperTeam

See Details about your Error — Compiler Error CS0542:

The members of a class or struct cannot have the same name as the
class or struct, unless the member is a constructor

AND (thanks to @Alexei Levenkov)

This error might be caused if you inadvertently put a return type on
a constructor
, which in effect makes it into an ordinary method.

Community's user avatar

answered Dec 4, 2013 at 21:56

Habib's user avatar

HabibHabib

217k27 gold badges401 silver badges429 bronze badges

2

Your class is SuperTeam and it has a method called SuperTeam that isn’t a constructor. I’m guessing that it was supposed to be a constructor, in which case, drop the void return type

public SuperTeam (string nSuperTeamName)
{
    SuperTeamName = nSuperTeamName;
}

If it’s actually supposed to be a method for setting SuperTeamName then change the name of the function (SetSuperTeamName would seem appropriate), or better yet change it into a property with a getter and a setter.

answered Dec 4, 2013 at 21:55

Matt Burland's user avatar

Matt BurlandMatt Burland

44.1k18 gold badges95 silver badges168 bronze badges

you have conflict the method has some name as the class constructor
try this for example

public SuperTeam()
{
    SuperTeamName = "";
}

public void SuperTeamMethod (string nSuperTeamName)
{
    SuperTeamName = nSuperTeamName;
}

answered Dec 4, 2013 at 21:54

BRAHIM Kamel's user avatar

BRAHIM KamelBRAHIM Kamel

13.3k34 silver badges46 bronze badges

Your constructor with the string nSuperTeamName is not supposed to have void. By having void, you made it one of the class’ members.

answered Dec 4, 2013 at 21:54

Zinthos's user avatar

filin_cprt

0 / 0 / 1

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

Сообщений: 80

1

11.05.2022, 11:20. Показов 1655. Ответов 5

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


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Windows;
using System.Windows.Controls;
 
namespace ToursApp
{
 
    public partial class HotelsPage : Page
    {
        public HotelsPage()
        {
            InitializeComponent();
        }
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Manager.MainFrame.Navigate(new AddEditPage());
        }
    }
}

Не понимаю что и где повторяется… полистал на других сайтах, ничего не понял

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



0



2058 / 1591 / 678

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

Сообщений: 4,768

11.05.2022, 11:48

2

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

Вот где и что повторяется…

Ну компилятор разве не пишет, что именно?



0



0 / 0 / 1

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

Сообщений: 80

11.05.2022, 11:51

 [ТС]

3

John Prick
Это все в WPF. В этот раздел по привычке залил.
А так ругается на 2 строку страницы xaml:

Миниатюры

CS0542 - «имена членов не могут совпадать с их типом включения»
 



0



Модератор

Эксперт .NET

13217 / 9515 / 2558

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

Сообщений: 28,103

Записей в блоге: 2

11.05.2022, 12:06

4

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

Решение

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

А так ругается на 2 строку страницы xaml

А ошибка в первой.
x:Name создаёт поле в файле partial класса «*.g.i.cs».
Вы задали имя такое же как название самого класса HotelsPage, а поле не может называться так же как класс его содержащий.
Измените имя x:Name="PART_HotelsPage"



0



Эксперт .NET

16739 / 12492 / 3283

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

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

11.05.2022, 14:35

5

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

Решение

filin_cprt, вы в классе HotelsPage объявили поле с именем HotelsPage, что делать нельзя.
Замените значение в атрибуте x:Name на что-нибудь, отличающееся от HotelsPage.



0



0 / 0 / 1

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

Сообщений: 80

11.05.2022, 16:26

 [ТС]

6

kolorotur
Спасибо, буду иметь ввиду! Все работает



0



IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

11.05.2022, 16:26

6

C# Compiler Error

CS0542 – ‘user-defined type’ : member names cannot be the same as their enclosing type

Reason for the Error

There are multiple scenarios that will cause this error to appear in your C# program. These include

  • The class contains the member with the same name as the class except the constructor.
  • When you have a return type for a constructor.

Let’s look at our first example where the class contains the members with the same name as the class name.

using System;

namespace DeveloperPublishConsoleCore
{
    class Employee
    {
        // This returns the error code CS0542
        public int Employee;
    }

    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("DeveloperPublish Hello World!");
        }
    }
}

In the above program, Employee class contains a field named Employee. This will result in the C# error code CS0542.

C# Error CS0542 – 'user-defined type' : member names cannot be the same as their enclosing type

Here’s our second use case.

using System;

namespace DeveloperPublishConsoleCore
{
    class Employee
    {
        // This returns the error code CS0542
        public int Employee()
        {
            return 0;
        }
        
    }

    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("DeveloperPublish Hello World!");
        }
    }
}

In the above program, the constructor in the Employee class returns a type which causes the error code CS0542.

C# Error CS0542 – 'user-defined type' : member names cannot be the same as their enclosing type

Solution

You can fix this error by ensuring that you either rename the field or the member that is causing the issue. For the constructors , ensure that you don’t have the return type.

Hi, everyone. My first MSDN post; I hope this is the right place to ask this question.

I have created a class «GradeBook» with the following code:

using System;

   public class GradeBook
   {
      public string CourseName { get; set; }

      public GradeBook(string name)
      {
         CourseName = name;
      }

            public void DisplayWelcome ()
      {
         Console.WriteLine(«Welcome to the gradebook for coursen{0}», CourseName);
      }

      public void DetermineClassAverage ()
      {
         int grade;
         int total = 0;
         int gradeCount = 1;
         double aveGrade;

         while (gradeCount <= 10)
         {
            Console.WriteLine(«Please enter the next grade: «);
            grade = Convert.ToInt32 (Console.ReadLine());
            Console.WriteLine();
            total += grade;
         }

         aveGrade = total / 10;
      }

            public void DisplayResults ()
      {
         WriteLine();
         Console.ReadLine();
      }
   }

When I try to build my project, line 7 gives me error CS0542: ‘GradeBook’: Member names cannot be the same as their enclosing type.

Of course, line 7 is intended to be a constructor. Its name should be the same as the class name. Help for this error says that it is often caused by including a return type for a construction; I do not have one here.

I created the class in connection with an example in a C# book I am studying, and in comparing the code in the book, as far as I can tell, the first 10 lines are identical.

This is probably something obvious. but I can’t see it. What am I missing?

  • Changed type

    Tuesday, May 19, 2009 1:07 AM

4 ответа

Проблема здесь:

public void SuperTeam(string nSuperTeamName)
{
    SuperTeamName = nSuperTeamName;
}

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

  • Если это конструктор, то удалите void (возвращаемый тип)
  • Если это простой метод, измените имя на другое, кроме SuperTeam

Подробнее о вашей ошибке — Ошибка компилятора CS0542:

Члены класса или структуры не могут иметь то же имя, что и класс или структура, если только элемент не является конструктором

И (спасибо @Алексею Левенкову)

Эта ошибка может быть вызвана, если вы случайно поместите тип возвращаемого значения в конструктор, что фактически превращает его в обычный метод.

Habib
04 дек. 2013, в 20:27

Поделиться

у вас есть конфликт, метод имеет какое-то имя в качестве конструктора класса
попробуйте это, например

public SuperTeam()
{
    SuperTeamName = "";
}

public void SuperTeamMethod (string nSuperTeamName)
{
    SuperTeamName = nSuperTeamName;
}

BRAHIM Kamel
04 дек. 2013, в 19:52

Поделиться

Ваш класс — SuperTeam, и у него есть метод SuperTeam, который не является конструктором. Я предполагаю, что он должен был быть конструктором, и в этом случае следует удалить возвращаемый тип void

public SuperTeam (string nSuperTeamName)
{
    SuperTeamName = nSuperTeamName;
}

Если он действительно должен быть методом установки SuperTeamName тогда измените имя функции (например, SetSuperTeamName) или еще лучше измените его на свойство с помощью геттера и сеттера.

Matt Burland
04 дек. 2013, в 19:39

Поделиться

Ваш конструктор со строкой nSuperTeamName не должен иметь void. Имея void, вы сделали ее одним из членов класса.

Zinthos
04 дек. 2013, в 19:32

Поделиться

Ещё вопросы

  • 1C # диаграмма класса — пользовательские метки для оси х?
  • 0codeigniter $ this не загружается в контроллер
  • 1Wysiwyg компонент для использования внутри моего приложения для Android?
  • 0Определить размер буфера для __i64toa_s
  • 0MySQL запрос для выбора максимального значения времени для максимальной даты для каждого клиента
  • 0Как передать переменную из JavaScript в PHP с помощью jQuery POST
  • 0Установка значения текстового поля с помощью GetElementsByName
  • 0изображения из нескольких столбцов, которые полностью заполняют окно браузера
  • 1Разборка приложения для Android
  • 02 изображения. изменить только при наведении мыши
  • 0AngularJS передача данных
  • 1Python Twisted в PB, вызов функции клиентского сервера
  • 0Обновление методов msql с помощью PDO
  • 1очистить кэш, когда я запусту свое приложение в Android
  • 0Как я могу вручную запустить рендеринг кнопки входа в Google по умолчанию
  • 1Как отобразить элемент списка «Больше» в ListView?
  • 0Отличный путь между 2 символами в Mysql
  • 0Использование пустого класса CSS для поиска элементов HTML
  • 1Apache poi HSSFWorkbook перезаписывает стили из шаблона XLS
  • 1Как вставить значение в MS Access с помощью Java
  • 0SQL — Выберите Топ результат для каждого игрока в последних 10 результатах каждого игрока
  • 0Как включить медленный журнал запросов для движка Amazon «Aurora MySQL»?
  • 0MySQL выбрать все данные таблицы из двух таблиц в двух базах данных
  • 1Улучшение производительности вложенного цикла for в node.js
  • 1Централизация получения переменной сеанса в ресурсе REST Джерси
  • 0Как скопировать файл с пробелами и полными остановками в имени файла, используя функцию копирования php? [Дубликат]
  • 0Элемент ошибки фокуса в IE8
  • 0Как проанализировать каждый элемент массива?
  • 0JQuery переключение элементов для редактирования
  • 0проверить пустые или не значения в столбцах в R
  • 1установить расширенную ширину и высоту ImageView программно — Android
  • 0Используется ли в моей директиве определяющая, изолированная или дочерняя область?
  • 0Как получить часы и минуты в этом коде MySQL PHP
  • 1Реактивность в пользовательских виджетах
  • 0Псевдоним MySQL для Subquery не работает
  • 0как установить кликаемый элемент списка в angularJS?
  • 0Генерация уникального URL для выполнения действия
  • 1Как использовать пользовательский элемент управления поверх элемента меню в C #?
  • 0IE 6-7 толкает вниз плавающий div
  • 0MYSQL две таблицы сортировки TRICKY
  • 1pip install производит «Не удалось найти версию, которая удовлетворяет требованию»
  • 0Присвоение функции переменной без вызова этой функции
  • 0preg для извлечения из тега h1
  • 0JQuery FadeTo — как использовать
  • 0$ http Запрос 404 не найден при добавлении localhost?
  • 1Список классов
  • 1install4j — получить идентификатор компонента, если настроенный идентификатор установлен
  • 1Цвет фона редактора ячеек со списком
  • 0Форматирование, преобразование из строки C
  • 1создать наследовать переопределить ODOO

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ятрогенная патология врачебные ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Как исправить ошибку cryengine error