1

私はC#とコーディング全般にかなり慣れていないので、これには明らかな答えがあるかもしれません...

他のいくつかの変数を連結 (Y と Z) した (または一緒に追加したなど) と同等の変数 (X) がある場合、それを使用するたびに Y と Z の変更を取得するように X を作成するにはどうすればよいですか? 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"

おそらくこれを達成するためのより良い方法があると思いますが、これは重要なプロジェクトではありません。この特定の問題を解決する方法よりも、質問の原則に興味があります。

ありがとう!

4

3 に答える 3

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
于 2013-07-25T00:22:48.857 に答える
5

代わりに変数をプロパティにすることができます

public string X
{
    get { return Y + Z; }
}
于 2013-07-25T00:22:08.457 に答える
1

通常、これにはプロパティを使用できます

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

public string Greeting 
{ 
  get { return string.Format("{0}, {1}!", Salutation, Name); } 
}
于 2013-07-25T00:23:36.283 に答える