2016-09-04 2 views
0

Я пытаюсь установить переменную в созданном мной классе.Невозможно установить переменную класса (C#)

public class Star 
{ 
    public int  starID   { get; set; } 
    public Vector3 position  { get; set; } 
    public string starName  { get; set; } 
    public char  starClass  { get; set; } 

} 

Позже, в том же файле я попытался следующий код:

public void generateGalaxy() 
{ 
    for(int i = 0; i < numOfStars; i++) 
    { 
     spawnStar(); 
    } 
} 

public void spawnStar() 
{ 
    Star testStar = new Star(); 

    testStar.starName.set("star1"); 
} 

ошибка была на '.set', сообщение было:

'string' does not contain a definition for 'set' and no extension method 'set' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference? 

Любые идеи?

+4

'testStar.starName =" star1 ";' – Plutonix

+1

Исходя из Java? – Steve

+1

[Использование свойств в C#] (https://msdn.microsoft.com/en-us/library/w86s7x04.aspx) в MSDN является хорошей отправной точкой для изучения свойств, но поскольку рекомендации по чтению документации редко помогают мне [duplicate] (http://stackoverflow.com/questions/5096926/what-is-the-get-set-syntax-in-c) (который описывает синтаксис, значение и использование 'get' /' set') охватывает этот вопрос просто отлично. –

ответ

0

Я хотел бы предложить:

public void generateGalaxy() 
{ 
    for(int i = 0; i < numOfStars; i++) 
    { 
     Star testStar = spawnStar(); 
    } 
} 

public Star spawnStar() 
{ 
    return new Star(){starName="star1"}; //Using object initializer and anonymous class 
} 

Как сказал Алексей: Это еще одна возможность сделать это.

@Sean McKenna: testStar.starName.set("star1"); // Вам не нужно явно указывать «установить». Просто используйте testStar.starName = "star1";.

И еще одно: я рекомендовал бы работать в соответствии с Microsoft C# Coding Conventions или Internal Coding Guidelines. Это означает, что переименование свойства в классе, как это:

public class Star 
{ 
    public int  StarID   { get; set; } 
    public Vector3 Position  { get; set; } 
    public string StarName  { get; set; } 
    public char  StarClass  { get; set; } 
} 

Согласно примеру, представленному в: добраться до нас

public class Foo 
{ 
    int bar; 

    public int Bar 
    { 
     get { return bar; } 
     set { bar = value; } 
    } 
} 

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

+0

Я знаю, этот код не имеет смысла, но как пример ... – FranzHuber23

+1

Я бы предложил объяснить код, который вы публикуете для будущих ответов. Если ваша цель не путать ОП, это вообще не отвечает на вопрос (также действительно дает альтернативу точному коду OP, предоставленному в сообщении) –

Смежные вопросы