2013-07-25 46 views
1

我在C#相当新的,和一般的编码,所以有可能是一个明显的答案,这...在C#中,我可以创建一个变量,根据变量的变化更新它的值吗?

如果我有一个变量(X),其等效级联的一些其他变量(Y和Z)(或者加在一起,或者其他什么),我怎么能让X使得每次使用它时,它都会得到Y和Z可能有的任何变化。

这可能吗?

这是我的代码。在这里,我只是不断地更新变量,但如果我不必继续这样做,它会很好。

 string prefix = ""; 
     string suffix = ""; 
     string playerName = "Player"; 
     string playerNameTotal = prefix + playerName + suffix; 

      // playerNameTotal is made up of these 3 variables 

     Console.WriteLine(playerNameTotal); // Prints "Player" 

     prefix = "Super "; 
     playerNameTotal = prefix + playerName + suffix; // I want to not have to use this line 
     Console.WriteLine(playerNameTotal); // Prints "Super Player" 

     suffix = " is Alive"; 
     playerNameTotal = prefix + playerName + suffix; // I want to not have to use this line 
     Console.WriteLine(playerNameTotal); // Prints "Super Player is Alive" 

     suffix = " is Dead"; 
     prefix = ""; 
     playerNameTotal = prefix + playerName + suffix; // I want to not have to use this line 
     Console.WriteLine(playerNameTotal); // Prints "Player is Dead" 

我意识到可能有更好的方法来完成这个,但这不是一个重要的项目。我对这个问题的原理更感兴趣,而不是如何解决这个问题。

谢谢!

+0

你可以创建你的类属性。在X的Get访问器中,检索Y和Z的值。 –

回答

8

你想用一个封装模型中的一个类的属性:

class PlayerName { 
    public string Prefix { get; set; } 
    public string Name { get; set; } 
    public string Suffix { get; set; } 
    public string PlayerNameTotal { 
     get { 
      return String.Join(
       " ", 
       new[] { this.Prefix, this.Name, this.Suffix } 
        .Where(s => !String.IsNullOrEmpty(s)) 
      ); 
     } 
    } 
} 

用法:

PlayerName playerName = new PlayerName { 
    Prefix = "", 
    Name = "Player", 
    Suffix = "" 
}; 

Console.WriteLine(playerName.PlayerNameTotal); 

playerName.Prefix = "Super"; 
Console.WriteLine(playerName.PlayerNameTotal); 

playerName.Suffix = "is Alive"; 
Console.WriteLine(playerName.PlayerNameTotal); 

playerName.Prefix = ""; 
playerName.Suffix = "is Dead"; 
Console.WriteLine(playerName.PlayerNameTotal); 

输出:

Player 
Super Player 
Super Player is Alive 
Player is Dead 
+0

谢谢您提供清晰而彻底的答案!这对我的方法来说绝对是一个巨大的改进。 – rockyourteeth

5

,你可以让你的变量,而不是

public string X 
{ 
    get { return Y + Z; } 
} 
1

通常可以使用属性此

public string Salutation { get; set; } 
public string Name { get; set; } 

public string Greeting 
{ 
    get { return string.Format("{0}, {1}!", Salutation, Name); } 
} 
相关问题