C#: Warum wird der Konstruktor nicht erkannt?
Ich wollte in Unity einen Konstruktor machen. Aber dies liefert einen Fehler und wird nicht mal in einer anderen Datei erkannt. Was habe ich falsch gemacht?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Noceclass
{
public bool walkable;
public Vector3 worldpos;
public Node(bool _walkeble, Vector3 _worldpos)
{
walkable = _walkeble;
worldpos = _worldpos;
}
}
Kann mir da jemand helfen?
Mit freundlichen Grüßen,
Sebastian
3 Antworten
Ein Konstruktor einer eigenen Klasse muss den gleichen Namen besitzen wie die Klasse selbst. Schau dir mal die Syntax von Konstruktoren an, siehe Constructors (Microsoft C# Programming Guide).
(...) A constructor is a method whose name is the same as the name of its type. (...)
Diese Unterstriche bei den Parametern macht man üblicherweise nicht. Wenn du zwischen Parameter des Konstruktors und dem Feld der Klasse unterscheiden möchtest, dann bietet es sich an, das Schlüsselwort this zu benutzen:
public class Node
{
public bool walkable;
public Vector3 worldPos;
public Node(bool walkable, Vector3 worldPos)
{
this.walkable = walkable;
this.worldPos = worldPos;
}
}
Weil du den gleichen Klassen Namen nutzen musst.
public class NodeClass
{
public bool walkable;
public Vector3 worldpos;
public NodeClass(bool _walkable, Vector3 _worldpos)
{
}
}
Der Konstruktor muss so heißen wie deine Klasse.
Und Tippfehler sind da sowieso ohne Ende drin.
UND an Konventionen hälst du dich offensichtlich auch nicht.